如何在 GCE 中为具有多个子域的多个 Web 应用设置 nginx

如何在 GCE 中为具有多个子域的多个 Web 应用设置 nginx

我正在使用带有 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指令添加到该块。

相关内容