Я хотел бы попросить некоторую помощь со следующей конфигурацией Nginx, чтобы URL-адреса, такие как https://www.mywebsite.comпереписать как https://mywebsite.com. В настоящее время я использую следующую конфигурацию:
server { server_name www.mywebsite.com; return 301 $scheme://mywebsite.com$request_uri; } server { listen 80; server_name mywebsite.com; # Some more settings... } server { listen 443 ssl; server_name mywebsite.com; ssl_certificate path_to_ssl_certificate; ssl_certificate_key path_to_ssl_certificate_key; # Some more settings... }
В случае, если это имеет значение, сертификат, который я использую, является подстановочным SSL-сертификатом, который был самозаверяющим с использованием OpenSSL на самом сервере (Ubuntu 12.04). Происходит то, что www.mywebsite.comправильно перенаправляет mywebsite.com, но https://www.mywebsite.comне перенаправляет https://www.mywebsite.com(то есть, wwwвсе еще появляется при просмотре страницы в браузере). Что я могу делать не так?
2 ответа на вопрос
3
Dmitry Verkhoturov
Решением является фиксация первого блока сервера следующим образом:
Например, вы забыли перехватить соединения www.mywebsite.com через порт ssl, вот и все. Кстати, это лучший способ убрать www из названия сайта, хороший выбор.
0
mgorven
Перенаправление происходит на виртуальном хосте, прослушивающем только порт 80. Чтобы перенаправить запросы, поступающие через SSL, вам нужен виртуальный хост, прослушивающий порт 443 с SSL. Если все ваши браузеры не поддерживают SNI, у вас может быть только один виртуальный хост SSL, и поэтому правило должно входить в существующий serverблок SSL .
if ($host = www.mywebsite.com) { rewrite ^ https://mywebsite.com$request_uri? permanent; }
Проголосовал из-за http://wiki.nginx.org/IfIsEvil
Dmitry Verkhoturov 9 лет назад
0