You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自托管Supabase的Nginx代理配置问题:登录后出现404错误

解决自托管Supabase子目录代理登录404的问题

一、修正Nginx配置

当前Nginx配置只是把/supabase开头的请求转发到8000端口,但Supabase的所有服务(Kong、Auth、Realtime等)都是基于根路径设计的,不会处理带/supabase前缀的请求,这就是登录后404的核心原因。

修改后的Nginx配置要帮Supabase去掉路径前缀,同时处理WebSocket(Realtime功能需要):

server {
    listen 80;
    listen [::]:80;

    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1;
        include proxy_params;
    }

    location /supabase/ {
        # 注意两端的斜杠:Nginx会把/supabase/后面的内容直接拼到8000的根路径
        proxy_pass http://127.0.0.1:8000/;
        include proxy_params;
        # 支持WebSocket连接
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        # 传递正确的外部域名信息给Supabase服务
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /websurvey {
        proxy_pass http://127.0.0.1:1200;
        include proxy_params;
    }
}

改完后执行sudo nginx -s reload生效。

二、更新Supabase的.env配置

所有涉及外部访问地址的配置都要换成你的域名(不要用公网IP),让Supabase知道自己的对外访问路径:

1. Auth(GoTrue)模块

# 替换成你的域名
API_EXTERNAL_URL=http://example.com/supabase
# SITE_URL要指向你的Flutter Web应用地址
SITE_URL=http://example.com/websurvey
# 加上Studio的回调地址,避免Studio登录跳转出错
ADDITIONAL_REDIRECT_URLS=http://example.com/supabase/studio

2. Studio模块

# 替换成域名
SUPABASE_PUBLIC_URL=http://example.com/supabase

3. Kong代理补充

如果你的Supabase用docker-compose部署,还需要给Kong加环境变量,让它识别外部路径:
打开docker-compose.yml,找到kong服务的environment部分,添加:

- KONG_SERVER_NAME=example.com
- KONG_PROXY_URI=http://example.com/supabase

或者直接在.env里加这两行,重启容器时会自动加载。

三、Flutter Web应用初始化配置

初始化Supabase客户端时,要指定正确的子路径地址:

import 'package:supabase_flutter/supabase_flutter.dart';

void main() async {
  await Supabase.initialize(
    url: 'http://example.com/supabase',
    anonKey: '你的ANON_KEY', // 从.env里复制ANON_KEY
    authCallbackUrlHostname: 'example.com',
    authUrl: 'http://example.com/supabase/auth/v1',
  );
  runApp(MyApp());
}

四、重启所有服务

  • 重启Nginx:sudo nginx -s reload
  • 重启Supabase容器:进入Supabase目录执行docker-compose down && docker-compose up -d

这样调整后,登录请求会被正确转发,Supabase生成的回调URL也会匹配域名路径,不会再出现404。

内容的提问来源于stack exchange,提问作者Sheenergizer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 14:00:32