Answer the question
In order to leave comments, you need to log in
How to properly configure nginx redirects from http to https and from non-www to www?
Good afternoon. Please take a look at my nginx config below. In the comments I wrote what's what.
Well, in general, who are the nginx gurus, plz tell a beginner where what can be changed or improved and how will it be more correct?)
#чисто для основного домена (без поддоменов) делаем редирект чтобы с www было
#с этой частью конфига все сайты перестали открываться
server {
listen 62.109.8.247:80;
listen 62.109.8.247:443 ssl http2; #если убрать это правило, то всё работает, но надо чтобы и при https://domain.ru редиректило на www
server_name domain.ru;
return 301 https://www.domain.ru$request_uri;
}
#абсолютно для всех поддоменов и основного домена перенаправляем с http на https
server {
listen 62.109.8.247:80;
server_name .domain.ru; #тут кстати знаю, что не совсем верно, но так удобней, чтобы каждый раз не добавлять сюда новый поддомен
return 301 https://$host$request_uri;
}
#основная секция
server {
listen 62.109.8.247:443 ssl http2;
server_name www.domain.ru spb.domain.ru vlg.domain.ru;
root /var/www/www-root/data/www/domain.ru/public_html;
include /var/www/www-root/data/www/ssl.conf;
location / {
rewrite ^/(.*)/$ /$1 permanent; #редиректим чтобы без слеша на конце было
try_files $uri /index.php?$args; #перенаправляем все запросы (если это не файл) на index.php
}
#как сделать следующие 3 правила более универсальными?
location /robots.txt {
if ($host = 'spb.gdebar.ru') {
rewrite robots.txt /robots-spb.txt break;
}
if ($host = 'www.gdebar.ru') {
rewrite robots.txt /robots-msk.txt break;
}
if ($host = 'vlg.gdebar.ru') {
rewrite robots.txt /robots-vlg.txt break;
}
}
location ~ \.php {
include fastcgi_params;
fastcgi_param SERVER_NAME $host;
fastcgi_pass unix:/var/www/php-fpm/www-root.sock;
fastcgi_param PHP_ADMIN_VALUE "error_log = /var/www/www-root/data/www/domain.ru/errors.log";
}
}
Answer the question
In order to leave comments, you need to log in
I give a clipping from our working config. Customize
server {
listen 80;
server_name domain.tld www.domain.tld;
rewrite ^ https://domain.tld$request_uri? permanent;
}
server {
listen 443 ssl;
server_name www.domain.tld
include inc/ssl.conf;
rewrite ^ https://domain.tld$request_uri? permanent;
}
server {
listen 443 ssl;
server_name domain.tld
.......
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question