У меня есть пара доменов на моем сервере. Есть мультисайт на wordpress и сайт на ванильном php. Все сайты WP работают правильно, но если сайт vanilla php перенаправляет на основной сайт WP. Вот конфиг основного сайта WP:
map $http_host $blogid {
1survey.cc 0;
b-shield.icu 1;
airlinetravel.life 2;
}
server {
server_name 1survey.cc *.1survey.cc;
return 301 https://$host$request_uri;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/1survey.cc/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/1survey.cc/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
listen 5.187.1.93:443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/1survey.cc/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/1survey.cc/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
if ($host = www.1survey.cc) {
return 301 https://$host$request_uri;
} # managed by Certbot
root /home/fornex/wordpress;
index index.php;
client_max_body_size 7m;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* /\. {
deny all;
}
location ~*\.(php)$ {
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
server {
if ($host = www.1survey.cc) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = b-shield.icu) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 5.187.1.93:80;
server_name 1survey.cc *.1survey.cc;
return 404; # managed by Certbot
}
server {
if ($host = 1survey.cc) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name 1survey.cc *.1survey.cc;
listen 80;
return 404; # managed by Certbot
}
Вот конфиг сайта vanilla php:
map $http_host $blogid {
1survey.cc 1;
b-shield.icu 0;
airlinetravel.life 2;
apparel.rest 3;
}
server {
if ($host = www.b-shield.icu) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = b-shield.icu) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name b-shield.icu *.b-shield.icu;
return 301 https://$host$request_uri;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/1survey.cc/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/1survey.cc/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.b-shield.icu) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name b-shield.icu *.b-shield.icu;
root /home/fornex/b-shield.icu;
index index.php;
include /home/fornex/b-shield.icu/nginx.conf;
client_max_body_size 7m;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* /\. {
deny all;
}
location ~*\.(php)$ {
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
server {
if ($host = b-shield.icu) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 5.187.1.93:80;
server_name b-shield.icu *.b-shield.icu;
return 404; # managed by Certbot
}
Если я попытаюсь получить доступ к b-shield.icu
он перенаправляет на https://1survey.cc/wp-signup.php?new=b-shield.icu. Что не так?
Конфигурация nginx ubuntu вордпресс
1 ответ
У тебя есть listen 5.187.1.93:443 ssl;
в одном server
блокировать и listen 443 ssl;
в другой.
Nginx использует часть IP-адреса для выбора server
блокирует серверы с более чем одним IP-адресом, где разные IP-адреса должны обрабатываться разными server
блоки.
В большинстве случаев IP-адрес не требуется в listen
утверждение.
Если у вас есть listen
заявления с IP-адресом и некоторые без, более конкретные listen
утверждение будет выбрано, вероятно, поэтому один из ваших server
блоки не принимают соединения.
Для согласованности во всех ваших server
блоки, используйте:
listen 80;
и/или:
listen 443 ssl;
Видеть этот документ для деталей.
Ричард Смит