我的组织有一台服务器专门用于处理已停用网站 (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 时会挂起,最后无法访问。不太好。