nginx プロキシで複数の proxy_pass を定義する

nginx プロキシで複数の proxy_pass を定義する

nginx-proxy をコンテナとして数年前から実行しています。完璧にスムーズで、問題はありません。そのために使用している Docker-compose.yml は次のとおりです。

    services:
  nginx-proxy:
    image: jwilder/nginx-proxy:alpine
    container_name: nginx-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx-certs:/etc/nginx/certs:ro
      - ./nginx-vhost:/etc/nginx/vhost.d
      - ./nginx-html:/usr/share/nginx/html
      - ./uploadsize.conf:/etc/nginx/conf.d/uploadsize.conf
      - ./subdomain1.mytld.com.conf:/etc/nginx/conf.d/subdomain1.mytld.com.conf:ro

ここで、ローカル IP アドレス上の別のサービスに proxy_pass を使用したいと思います。問題: 定義されたサブドメインの 1 つだけで機能し、両方がアクティブになっていると機能しません。

動作中 (subdomain1.mytld.com.conf の内容):

server {
        listen 443 ssl default;
        ssl_certificate     certs/mytld.com.crt;
        ssl_certificate_key certs/mytld.com.key;
        server_name subdomain1.mytld.com;
        location / {
                proxy_pass https://10.8.0.4/;
        }
#        server_name subdomain2.mytld.com;
#        location / {
#                proxy_pass http://10.8.0.4:8096/;
#        }
}

動作しません:

server {
        listen 443 ssl default;
        ssl_certificate     certs/mytld.com.crt;
        ssl_certificate_key certs/mytld.com.key;
        server_name subdomain1.mytld.com;
        location / {
                proxy_pass https://10.8.0.4/;
        }
        server_name subdomain2.mytld.com;
        location / {
                proxy_pass http://10.8.0.4:8096/;
        }
}

これらの server_names のうち 2 つを有効にするとすぐに、nginx プロキシ全体が動作しなくなります。何が足りないのでしょうか? ご協力ありがとうございます

答え1

問題が見つかりました。サーバー タグでは、「default」の使用は 1 回のみ許可されます。したがって、次のように構成を使用すると機能します。

server {
        listen 443 ssl default;
        ssl_certificate     certs/mytld.com.crt;
        ssl_certificate_key certs/mytld.com.key;
        server_name subdomain1.mytld.com;
        location / {
                proxy_pass https://10.8.0.4/;
        }
}

server {
        listen 443 ssl;
        ssl_certificate     certs/mytld.com.crt;
        ssl_certificate_key certs/mytld.com.key;
        server_name subdomain2.mytld.com;
        location / {
                proxy_pass http://10.8.0.4:8096/;
        }
}

関連情報