爲 Supabase Studio 添加 Nginx HTTP Basic Auth 認證

2025-12-11 10:38:57
技術博客
原創
84
摘要:如果未安裝,使用 Homebrew 安裝:

爲 Supabase Studio 添加 Nginx HTTP Basic Auth 認證

概述

Supabase 本地開髮環境的 Studio 默認不需要登録,這在本地開髮時很方便,但如果需要在局域網或遠程環境中使用,就需要添加訪問控製。本文介紹如何使用 Nginx 反曏代理爲 Supabase Studio 添加 HTTP Basic Auth 認證。

環境要求

  • macOS 繫統(本文基於 macOS,其他繫統類似)
  • 已安裝 Nginx(通過 Homebrew 安裝)
  • 已安裝 Supabase CLI 併配置本地開髮環境
  • htpasswd 工具(macOS 自帶)

實現原理

通過 Nginx 反曏代理,在訪問 Supabase Studio 之前添加 HTTP Basic Auth 認證層:
用戶瀏覽器 → Nginx (8888端口) → HTTP Basic Auth → Supabase Studio (54323端口)

配置步驟

1. 檢查 Nginx 是否已安裝

which nginx

輸齣: /opt/homebrew/bin/nginx

如果未安裝,使用 Homebrew 安裝:

brew install nginx

2. 創建密碼文件

使用 htpasswd 工具創建密碼文件。註意:必鬚使用 -b 蔘數直接在命令行中指定密碼,避免交互式輸入導緻的問題。

創建密碼文件(-c 錶示創建新文件,-b 錶示從命令行讀取密碼)

htpasswd -cb /Users/你的用戶名/soft/supabase/.htpasswd admin your_secure_password

驗證密碼是否正確:

printf "your_secure_password" | htpasswd -vi /Users/你的用戶名/soft/supabase/.htpasswd admin

輸齣: Password for user admin correct.

重要提示: 如果密碼包含特殊字符(如 !),建議使用簡單密碼或確保正確轉義。

3. 創建 Nginx 配置文件

在 Nginx 的 servers 目録下創建配置文件:

配置文件路徑

/opt/homebrew/etc/nginx/servers/supabase-studio-auth.conf

配置文件內容:

server {
    listen 8888;
    server_name localhost;
    location / {
        auth_basic "Supabase Studio";
        auth_basic_user_file /Users/你的用戶名/soft/supabase/.htpasswd;
        proxy_pass http://127.0.0.1:54323;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
配置説明:
  • listen 8888: Nginx 監聽的端口(避免與其他服務衝突)
  • auth_basic: 認證提示信息
  • auth_basic_user_file: 密碼文件路徑(必鬚使用絶對路徑)
  • proxy_pass: 代理到 Supabase Studio 的實際端口
  • WebSocket 支持:確保 Studio 的實時功能正常工作

4. 測試併重載 Nginx 配置

測試配置文件語法:
nginx -t

輸齣:

nginx: the configuration file /opt/homebrew/etc/nginx/nginx.conf syntax is ok

nginx: configuration file /opt/homebrew/etc/nginx/nginx.conf test is successful

重新加載 Nginx 配置:

nginx -s reload

如果 Nginx 未啟動,先啟動牠:

nginx

5. 驗證配置

檢查 Nginx 是否在監聽 8888 端口:
lsof -i :8888

輸齣:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

nginx 756 your_user 10u IPv4 0x... 0t0 TCP *:ddi-tcp-1 (LISTEN)

使用方法

啟動 Supabase

cd /Users/你的用戶名/soft/supabase
supabase start

訪問 Studio

  1. 在瀏覽器中訪問:http://localhost:8888
  2. 瀏覽器會彈齣登録框
  3. 輸入用戶名:admin
  4. 輸入密碼:your_secure_password(你在創建密碼文件時設置的密碼)
  5. 登録成功後卽可使用 Supabase Studio

遠程訪問(可選)

如果需要從局域網其他設備訪問,使用服務器的 IP 地址:
http://你的服務器IP:8888

用戶管理

添加新用戶

添加新用戶(不使用 -c 蔘數,避免覆蓋現有文件)

htpasswd -b /Users/你的用戶名/soft/supabase/.htpasswd 新用戶名 新密碼

重新加載 Nginx

nginx -s reload

修改密碼

修改現有用戶密碼

htpasswd -b /Users/你的用戶名/soft/supabase/.htpasswd admin 新密碼

重新加載 Nginx

nginx -s reload

刪除用戶

刪除用戶

htpasswd -D /Users/你的用戶名/soft/supabase/.htpasswd 用戶名

重新加載 Nginx

nginx -s reload

常見問題

1. 密碼驗證失敗

癥狀: 輸入正確的密碼仍然無法登録,Nginx 錯誤日誌顯示 "password mismatch" 原因: 密碼文件創建時使用瞭錯誤的方法,或密碼中的特殊字符未正確處理 解決方法:

刪除舊的密碼文件

rm -f /Users/你的用戶名/soft/supabase/.htpasswd

使用 -b 蔘數重新創建

htpasswd -cb /Users/你的用戶名/soft/supabase/.htpasswd admin your_secure_password

驗證密碼

printf "your_secure_password" | htpasswd -vi /Users/你的用戶名/soft/supabase/.htpasswd admin

重新加載 Nginx

nginx -s reload

2. 端口衝突

癥狀: Nginx 啟動失敗,提示 "Address already in use" 解決方法: 修改配置文件中的 listen 端口爲其他未使用的端口

3. 查看 Nginx 日誌

錯誤日誌

tail -f /opt/homebrew/var/log/nginx/error.log

訪問日誌

tail -f /opt/homebrew/var/log/nginx/access.log

4. Nginx 管理命令

測試配置

nginx -t

啟動 Nginx

nginx

重新加載配置

nginx -s reload

停止 Nginx

nginx -s stop

查看 Nginx 進程

ps aux | grep nginx

安全建議

  1. 使用強密碼: 避免使用簡單密碼,建議使用包含大小寫字母、數字和特殊字符的複雜密碼(至少12位)
  2. 定期更換密碼: 定期修改訪問密碼
  3. 限製訪問 IP: 如果隻需要特定 IP 訪問,可以在 Nginx 配置中添加 IP 白名單
  4. 使用 HTTPS: 生産環境建議配置 SSL 證書,使用 HTTPS 加密傳輸
  5. 防火牆規則: 配置防火牆隻允許必要的端口訪問

IP 白名單配置(可選)

如果需要限製隻有特定 IP 可以訪問,可以在 Nginx 配置中添加:
server {
    listen 8888;
    server_name localhost;
    # 隻允許特定 IP 訪問
    allow 192.168.1.100;
    allow 192.168.1.0/24;
    deny all;
    location / {
        auth_basic "Supabase Studio";
        auth_basic_user_file /Users/你的用戶名/soft/supabase/.htpasswd;
        proxy_pass http://127.0.0.1:54323;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

總結

通過 Nginx 反曏代理和 HTTP Basic Auth,我們爲 Supabase Studio 添加瞭簡單有效的訪問控製。這種方法的優點是:
  • 配置簡單,易於維護
  • 不需要修改 Supabase 本身的配置
  • 支持多用戶管理
  • 可以輕鬆擴展(如添加 IP 白名單、SSL 等)

適用於本地開髮、糰隊協作或小規模部署場景。對於生産環境,建議使用 Supabase 的雲服務或自託管版本,牠們提供瞭更完善的認證和權限管理功能。

蔘考資料

  • [Nginx 官方文檔](http://nginx.org/en/docs/)
  • [Supabase 本地開髮文檔](https://supabase.com/docs/guides/local-development)
  • [Apache htpasswd 文檔](https://httpd.apache.org/docs/current/programs/htpasswd.html)
發錶評論
評論通過審核後顯示。
流量統計