nginx 不会监听非标准端口

nginx 不会监听非标准端口

我的组织有一台服务器专门用于处理已停用网站 (redirects-myorg.org) 的重定向。我们刚刚停用了一个网站 (widgets.org),我正在将已停用的网站添加到我们的重定向服务器中。大约一周前,我们更改了 widgets.org 的 CNAME 记录,使其指向 redirects-myorg.org。

widgets.org 中大多数流通的 URL 看起来都类似这样:widgets.org:8180/more/info。8180 端口明确包含在 URL 中。

成功的样子如下:

  • 在浏览器中输入 widgets.org:重定向到 blue-server.com。
  • 在浏览器中输入 widgets.org:8180:重定向到 purple-server.com

(更多背景信息:其他三个站点的重定向由该重定向服务器管理,其配置文件引用端口 80 和 443。这些站点均未使用 8180 等非标准端口。)

尝试

1. 我首先设置 nginx 配置文件以列出端口 80 和 8180,并在每个端口上返回 301 重定向:

server {
        listen 8180;
        listen [::]:8180;
        server_name widgets.org;
        return 301 https://purple-server.com;
}
server {
        listen 80;
        listen [::]:80;
        server_name widgets.org;
        return 301 https://blue-server.com;
}

结果

  • 在浏览器中输入 widgets.org:重定向到 blue-server.com。很好。
  • 在浏览器中输入 widgets.org:8180:挂起,最后无法访问。不太好。

2. 尝试切换顺序,但没有成功:

server {
        listen 80;
        listen [::]:80;
        server_name widgets.org;
        return 301 https://blue-server.com;
}
server {
        listen 8180;
        listen [::]:8180;
        server_name widgets.org;
        return 301 https://purple-server.com;
}

结果

  • 同上。

3. 尝试欺骗 nginx,但没有成功:

server {
        listen 80;
        listen [::]:80;
        server_name widgets.org:8180;
        return 301 https://purple-server.com;
}

结果:

  • 在浏览器中输入 widgets.org:“欢迎使用 nginx!”页面。不太好。
  • 在浏览器中输入 widgets.org:8180:挂起,最后无法访问。不太好。

4.尝试用不同的方法欺骗 nginx,但没有成功:

server {
        listen 80;
        listen [::]:80;
        server_name widgets.org;
        rewrite ^:8180.* https://purple-server.com break;
        return 301 https://blue-server.com;
}

结果:

  • 在浏览器中输入 widgets.org 会重定向到 blue-server.com。很好。
  • 在浏览器中输入 widgets.org:8180 时会挂起,最后无法访问。不太好。

相关内容