You need to enable JavaScript to run this app. 基于bitnami/nginx:latest的类群晖反向代理Nginx配置求助
优惠活动
大模型
产品
解决方案
定价
更多

基于bitnami/nginx:latest的类群晖反向代理Nginx配置求助

正确的Nginx配置方案(适配bitnami/nginx:latest)

前置全局依赖:WebSocket变量定义

首先要在http上下文(可放在bitnami nginx的/opt/bitnami/nginx/conf/vhosts/目录下的任意.conf文件中)添加WebSocket需要的变量映射,否则连接升级逻辑会失效:

# 定义WebSocket连接升级的Connection头规则
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

完整站点配置(直接保存为vhosts目录下的my-example-proxy.conf)

# --------------------------
# 1. HTTP强制跳转HTTPS块(对应bitnami容器内8080端口,映射宿主80端口)
# --------------------------
server {
    listen 8080;
    listen [::]:8080;
    server_name ~^(.*)\.my-example\.com$;

    # 强制301永久跳转HTTPS,不暴露原端口
    return 301 https://$host$request_uri;
}

# 拦截恶意请求的HTTP默认块
server {
    listen 8080 default_server;
    listen [::]:8080 default_server;
    server_name _;
    return 444;
}

# --------------------------
# 2. HTTPS反向代理块(对应bitnami容器内8443端口,映射宿主443端口)
# --------------------------
server {
    # bitnami默认HTTPS监听端口为8443,已映射宿主443
    listen 8443 ssl;
    listen [::]:8443 ssl;
    server_name ~^(.*)\.my-example\.com$;

    # 证书路径(适配bitnami默认路径,自行替换为实际证书文件)
    ssl_certificate   /opt/bitnami/nginx/conf/bitnami/certs/server.crt;
    ssl_certificate_key /opt/bitnami/nginx/conf/bitnami/certs/server.key;
    # 可选:优化SSL配置
    ssl_session_cache shared:SSL:10m;
    ssl_protocols TLSv1.2 TLSv1.3;

    # 日志路径
    access_log /opt/bitnami/nginx/logs/my-example_access.log;
    error_log /opt/bitnami/nginx/logs/my-example_error.log;

    location / {
        # 基础反代头配置
        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专属核心配置*
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        # 后端转发地址:根据实际后端协议调整,若后端是HTTP则用http://,自签HTTPS证书需加`proxy_ssl_verify off`
        proxy_pass http://127.0.0.1:30000;
        # 关闭重定向覆盖,避免后端跳转暴露端口
        proxy_redirect off;

        # 可选:WebSocket超时配置,避免长连接被断开
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s;
    }
}

# 拦截恶意请求的HTTPS默认块
server {
    listen 8443 ssl default_server;
    listen [::]:8443 ssl default_server;
    server_name _;

    # 恶意请求直接断开连接
    return 444;
}

原配置的核心错误修正点

  • 原HTTP块直接做反代,未实现HTTP强制跳转HTTPS,拆分跳转逻辑和反代逻辑后满足需求
  • 缺少$connection_upgrade的全局map定义,WebSocket握手会直接失败
  • 原proxy_pass https://$host:30000$request_uri/写法错误:末尾加/+拼接$request_uri会导致路径重复拼接为//,正确写法直接写后端地址,Nginx会自动透传完整请求路径
  • 未配置对应HTTPS的监听块,所有请求走HTTP不符合安全要求

适配bitnami镜像的注意事项

  • bitnami/nginx:latest默认端口映射规则为:宿主80→容器8080,宿主443→容器8443,无需额外修改监听端口
  • 自定义配置文件必须放在/opt/bitnami/nginx/conf/vhosts/目录下,才会被Nginx自动加载
  • 若后端服务是独立Docker容器,需把proxy_pass中的127.0.0.1替换为后端容器的服务名/内网IP
  • 若后端是HTTPS协议,需把proxy_pass改为https://后端地址:30000,且添加proxy_ssl_verify off跳过自签证书校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 19:36:03