Skip to content

使用 Nginx 反向代理

1. 基本配置示例

假设你的 Komari 服务运行在本地 127.0.0.1:25774,可以在 Nginx 配置文件中使用如下内容:

nginx
server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:25774;
        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";

        # 禁用代理缓冲
        proxy_buffering off;

        # 允许大文件上传(50M)
        client_max_body_size 50M;
    }
}

2. 重点参数说明

  • proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade"; 确保启用 WebSocket
  • proxy_http_version 1.1; 必须设置为 1.1,WebSocket 仅支持 HTTP/1.1。
  • 其他 proxy_set_header 用于保留客户端真实 IP 和主机信息。

3. 常见问题

  • 连接失败/断开:请确认后端服务监听地址与端口正确,且 Nginx 配置已 reload。
  • 实在无法处理 ws 反向代理:若确认问题来自于反向代理导致的 Origin 校验失败,且短期内无法修复代理配置,可在后端以环境变量方式显式禁用 WebSocket 的 Origin 校验:KOMARI_WS_DISABLE_ORIGIN=true。此方式仅建议用于排障或临时过渡,存在安全风险(可能导致跨站来源的非预期连接),不建议在生产环境长期启用。

4. 应用配置

修改完配置后,记得重载 Nginx:

shell
sudo nginx -s reload

如需 HTTPS,请将 listen 80; 改为 listen 443 ssl; 并补充 SSL 相关配置。

5. 兼容哪吒的gRpc代理示例

nginx
location ^~ /proto.NezhaService/ {
    grpc_set_header Host $host;
    grpc_read_timeout 600s;
    grpc_send_timeout 600s;
    grpc_socket_keepalive on;
    client_max_body_size 10m;
    grpc_buffer_size 4m;
    grpc_pass grpc://127.0.0.1:5555;
}

另:

  • 若使用了 Cloudflare,请确保在 Cloudflare 的设置中,启用gRPC代理功能。
  • 如果使用了 HTTPS,请打开哪吒的TLS支持。
  • 兼容哪吒为娱乐功能,并无长期维护打算。
  • NTR爱好者狂喜。