在一台服务器上用 Nginx 反向代理多个网站服务是一种常见实践,常见做法是利用服务器上不同的端口来代理不同的网站服务。
但对于一些带有页面重定向的网站服务而言,在页面重定向/页面跳转时会丢失端口信息(比如 Gitlab 登录页面的跳转),进而影响网站服务的正常使用。
问题描述
举个简单例子,比如以下的 URL 反向代理了一套 Gitlab 服务:https://gitlab.mydomain.com:8877
在浏览器地址栏输入以上 URL 后,随即被重定向到:https://gitlab.mydomain.com/users/sign_in
也就是跳转到 https 的默认端口 443,自然无法正常访问到原先在 8877 端口反向代理的 Gitlab 页面:
如何解决
首先,定位到 Nginx 的配置文件,一般位于 /etc/nginx/nginx.conf
。
然后在配置文件中找到反向代理的配置段,一般是以 location /
标记的内容块。在 proxy_set_header Host
字段中添加 :$server_port
内容,即可在页面重定向时带上自定义端口信息。
然后,重启 Nginx,即可顺利跳转到 Gitlab 的登录页面:
OK.