问题描述
我遇到了 Nginx 无法处理指向同一 IP 地址的多个域的问题。访问任一域时,它们都默认为“catacombsfellowship.org.cnf”。访问 edmunddesoto.com 时,它的行为就好像它是 catacombsfellowship.org 并且我收到 SSL 证书错误,其中证书用于 catacombsfellowship.org。
当我自己运行任一域时,它们都可以正常工作。但是,它们不能无缝地协同工作。我做错了什么?
示例:
server {
listen 80;
listen [::]:80;
server_name edmunddesoto.com default_server;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name edmunddesoto.com default_server;
root /var/www/html/edmunddesoto.com/live;
index index.PHP index.html index.htm index.Nginx-debian.html;
ssl_certificate /etc/ssl/certs/edmunddesoto.com.crt;
ssl_certificate_key /etc/ssl/private/edmunddesoto.com.key;
location / {
try_files $uri $uri/ /index.PHP?$args;
}
location ~ \.PHP$ {
include snippets/fastcgi-PHP.conf;
fastcgi_pass unix:/var/run/PHP/PHP7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
文件:catacombsfellowship.org.cnf
server {
listen 80;
listen [::]:80;
server_name catacombsfellowship.org default_server;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name catacombsfellowship.org default_server;
root /var/www/html/catacombsfellowship.org/live;
index index.PHP index.html index.htm index.Nginx-debian.html;
ssl_certificate /etc/ssl/certs/catacombsfellowship.org.crt;
ssl_certificate_key /etc/ssl/private/catacombsfellowship.org.key;
location / {
try_files $uri $uri/ /index.PHP?$args;
}
location ~ \.PHP$ {
include snippets/fastcgi-PHP.conf;
fastcgi_pass unix:/var/run/PHP/PHP5.6-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
解决方法
好的,我想通了。问题是它以某种方式重定向到 www.* 域,而那些未在 server_name 指令中设置。因此,通过将 www.* 添加到 server_name 指令,它修复了它。