我正在使用带有 LEMP 堆栈的 GCE。我有多个子域,每个子域都有不同的根文件夹。
我的设置如下:
生产应用程序
server {
listen 80;
listen [::]:80 ipv6only=on;
listen 443 ssl http2;
listen [::]:443 ipv6only=on ssl http2;
ssl_certificate /etc/nginx/ssl/*.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/*.example.com.key;
server_name prod.example.com;
root /var/www/example/web;
client_max_body_size 10M;
}
暂存应用程序
server {
listen [::]:80;
listen [::]:443 ssl http2;
ssl_certificate /etc/nginx/ssl/*.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/*.example.com.key;
server_name staging.example.com;
root /var/www/example-staging/web;
client_max_body_size 10M;
}
除了 server_name 部分外,它们的配置相同。但是,nginx 似乎无法区分这两个不同的配置。
无论我使用 prod.example.com 还是 staging.example.com,两者都只会路由到 prod 根文件夹。
我的配置是否存在问题,导致了此问题?
答案1
您的“staging”server
块仅监听 IPv6,但您正在通过 IPv4 访问服务器。您还需要将 IPv4listen
指令添加到该块。