Dan*_*scu 5 nginx firefox google-chrome opera
我有一个非常基本的 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;
}
}
Run Code Online (Sandbox Code Playgroud)
wget -S
、http://www.rexswain.com/httpview.html、浏览器截图等正确检测到 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。
server {
listen 80;
listen [::]:80;
server_name www.idorecall.com;
return 301 $scheme://idorecall.com$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4787 次 |
最近记录: |