У меня очень простая настройка nginx, которая перенаправляет www.example.com
к example.com
, следуя лучшая практика. Он работает, и в браузере Tor Firefox http://www.idorecall.com/blog действительно обновляет URL-адрес в адресной строке на http://idorecall.com/blog.
Но это не меняет URL-адрес в адресной строке Chrome, Firefox Portable, IE и Opera Portable.
Вот модифицированный default
Конфигурация nginx. Других файлов конфигурации nginx, кроме nginx.conf, нет.
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, браузерные снимки и т. д. правильно обнаруживают перенаправление 301 «Перемещено навсегда». Однако большинство браузеров сохраняют URL-адрес www. Очень неприятно. Firefox и Opera были установлены с нуля, поэтому в истории домена www нет.
GitHub удается перенаправить http (s): //www.github.com на https://github.com в каждом браузере. Как они это делают?
Вы не видите перенаправления (а есть krisFR), потому что у вас есть IPv6 (а у него его нет), а ваш nginx server
блок, содержащий перенаправление, используется только для соединений 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;
}