Одно правило на все сайты
У меня 2 сайта, у каждого свой конфигурационный файл.
Возможно выполнить так, чтобы если урл через http:// либо через www Не важно какой сайт, выполнить перенаправление. Но только чтобы, если обращение по ИП, проигнорировать данный блок
server {
if ($host = www.site.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = site.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name site.ru www.site.ru;
listen 80;
return 404; # managed by Certbot
}
server {
server_name site.ru www.site.ru;
listen 80 default_server;
listen [::]:80 default_server;
return 301 https://site.ru$request_uri;
}
То есть объединить 2 блока в 1, сделать его универсальным. Только если обращение по ИП, проигнорировать блок. На ИП рассчитываю разместить панель управление phpmyadmin
server {
server_name _;
listen 80 default_server;
listen [::]:80 default_server;
if($host = "site.ru" || $host = "www.site.ru") {
return 301 https://site.ru$request_uri;
}
if($host = "site1.ru" || $host = "www.site1.ru") {
return 301 https://site1.ru$request_uri;
}
}
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Не входит, из конфигурационных файлов, где были размещены блоки, удалила их.
При чтении, ругается на синтакс как я понимаю
if($host
Пробовала запустить без
server_name _;
Все также, ругается на туже строчку, на хост
Ответы (1 шт):
Автор решения: Ivan Shatsky
→ Ссылка
Объединить два блока можно, хотя это и не будет оптимальным решением:
server {
listen 80 default_server;
listen [::]:80 default_server;
if ($host = www.site.ru) {
return 301 https://$host$request_uri;
}
if ($host = site.ru) {
return 301 https://$host$request_uri;
}
location / {
return 404;
}
location /pma {
# конфигурация для phpMyAdmin
}
}