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

基于Nginx在单域名下部署三个网站的配置求助

解决Nginx重定向暴露端口问题

你当前使用的rewrite ... redirect会触发客户端重定向,导致浏览器地址栏显示端口号。要实现URL保持abc.com/a这类形式的访问,需要改用Nginx的反向代理功能替代重定向。

以下是修正后的完整Nginx配置:

server {
    listen 80;
    server_name abc.com;

    # 代理到第一个Docker容器
    location /a {
        proxy_pass http://1.2.3.4:50/a;
        # 传递必要的请求头给后端服务
        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;
    }

    # 代理到第二个Docker容器
    location /b {
        proxy_pass http://1.2.3.4:60/b;
        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;
    }

    # 代理到第三个Docker容器
    location /c {
        proxy_pass http://1.2.3.4:70/c;
        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_pass:该指令会将请求内部转发到后端Docker容器,不会触发客户端重定向,因此浏览器地址栏始终显示abc.com/a这类域名路径。
  • proxy_set_header:这些头信息确保后端服务能获取到正确的请求主机、客户端IP和协议,避免因反向代理导致的功能异常。

配置生效步骤:

  1. 将上述配置保存到Nginx的配置目录(如/etc/nginx/conf.d/abc.conf)。
  2. 验证配置语法正确性:
    nginx -t
    
  3. 重新加载Nginx使配置生效:
    systemctl reload nginx
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:40:58