Редирект nginx, который принудительно обновляет URL в браузере
У меня есть очень простая настройка 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, Browserhots и т. д. правильно определяют перенаправление 301 "Перемещено навсегда". Большинство браузеров сохраняют URL-адрес www. Супер расстраивает. Firefox и Opera были установлены с нуля, поэтому история попаданий в домен www отсутствует.
GitHub удается перенаправить http(s)://www.github.com на https://github.com/ в каждом браузере. Как они это делают?
1 ответ
Вы не видите редирект (а 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;
}