基于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和协议,避免因反向代理导致的功能异常。
配置生效步骤:
- 将上述配置保存到Nginx的配置目录(如
/etc/nginx/conf.d/abc.conf)。 - 验证配置语法正确性:
nginx -t - 重新加载Nginx使配置生效:
systemctl reload nginx
内容的提问来源于stack exchange,提问作者sagar
相关产品推荐
相关产品推荐

