我有一个非常基本的 nginx 设置重定向www.example.com
到example.com
,遵循最佳实践。它可以工作,在 Tor Firefox 浏览器中,访问 http://www.idorecall.com/blog确实会将地址栏中的 URL 更新为http://idorecall.com/blog。
但这不会改变 Chrome、Firefox Portable、IE 和 Opera Portable 的地址栏中的 URL。
这是修改后的default
nginx 配置。除了 nginx.conf 之外,没有其他 nginx 配置文件。
server {
server_name www.idorecall.com;
return 301 $scheme://idorecall.com$request_uri;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name idorecall.com;
location / {
try_files $uri $uri/ =404;
}
location /blog {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_pass http://127.0.0.1:2368;
}
}
wget -S
, http://www.rexswain.com/httpview.html , browsershots 等正确检测到 301“永久移动”重定向。大多数浏览器虽然保留 www URL。超级沮丧。Firefox 和 Opera 是从头开始安装的,因此 www 域没有历史记录。
GitHub 设法在每个浏览器中将 http(s)://www.github.com 重定向到https://github.com 。他们如何做到这一点?
您没有看到重定向(并且 krisFR 是),因为您有 IPv6(而他没有),并且
server
包含重定向的 nginx 块仅用于 IPv4 连接。当一个
server
块省略指令时,它默认为,listen
listen *:80
它只侦听所有 IPv4 地址(并且等效于listen 80
)。因此,此server
块将永远不会用于 IPv6 连接,这些连接属于您定义的default_server
.要解决此问题,请添加适当的
listen
指令以同时侦听 IPv4 和 IPv6。