Screatch
@Screatch
Ruby On Rails front-end developer

Форсированное убирание www из ссылки (Nginx, HTTPS, Passenger)?

Перегуглил половину интернета и рабочего решения к сожалению так и не нашёл.



На сервере крутится Rails приложение под Passenger (который работает на Nginx). В добавок ко всему этому, на сайте есть форсированное перенаправление на версию сайта с https.



Перенаправление на версию сайта с https происходит следующим образом:



server {<br>
        listen 80;<br>
        rewrite ^(.*) https://example.ru$1 permanent;<br>
    }<br>




Ниже уже есть server блок, который слушает 443 порт с server_name example.ru



server {<br>
        listen   443;<br>
        server_name  example.ru;<br>
        #rewrite     ^   https://$server_name$request_uri? permanent;<br>
<br>
        ssl on;<br>
        ssl_certificate /opt/nginx/conf/certs/example.ru.crt;<br>
        ssl_certificate_key /opt/nginx/conf/certs/example.ru.key.nopass;<br>
<br>
        charset utf-8;<br>
        root /var/www/public;<br>
        passenger_enabled on;<br>
        rails_env production;<br>
<br>
        error_page   500 502 503 504  /50x.html;<br>
        location = /50x.html {<br>
            root   html;<br>
        }<br>
    }<br>




Как сделать форсированное перенаправление всех запросов на example.ru (https) даже если был запрошен www.example.ru (http)



Очень расчитываю на вашу помощь.
  • Вопрос задан
  • 3515 просмотров
Решения вопроса 1
@rakeev
А server_name в том блоке вообще не указан? Так должно быть:
server {
    listen 80;
    server_name example.com www.example.com;
    rewrite ^(.*) https://example.com$1 permanent;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Maximus43
@Maximus43
server {
        listen  80;
        server_name  www.example.com;

location ~ (?<URL>^.*) {
                return 301 https://example.com$url$is_args$args;
                }
}
Ответ написан
Комментировать
yumitsu
@yumitsu
А почему именно рерайт, а не вот эта строка в config/environments/production.rb:
config.force_ssl = true

Правда, это не будет редиректить с www. на основной домен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы