web-dev-qa-db-ja.com

Nginxがカスタムドメインリクエストを正しいポートに転送しない

ユーザーが自分のWebサイトのポートフォリオを作成できるWebサイトがあります。ユーザーは、ドメインのAレコードを変更し、サーバーのIPアドレスをレコードに入力するだけで、Webサイト(user1.example.com)にマップされます。私の問題は、これをテストするためにドメイン(example.com)を購入し、それがこのサービスを使用できる実際のWebサイトのホームページにルーティングすることです。

ユーザーが自分のWebサイトにアクセスできる唯一の方法は、次の方法です。http://example.com:3000-3000は、私のNode.jsアプリが実行されるポートです。私のNginx設定は以下にあります、誰かが私に骨を投げることができますか?

server {
    listen 80;
    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /etc/nginx/ssl/example.com/cert_chain.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

    server_name example.com *.example.com "";
    access_log /var/log/nginx/nginx.vhost.access.log;
    error_log /var/log/nginx/nginx.vhost.error.log;

    root /opt/33i/;

    # Perfect forward secrecy
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/nginx/ssl/example.com/dhparams.pem;
    ssl_ciphers ;

    # HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header X_FORWARDED_PROTO https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_Host;
        proxy_set_header X-Url-Scheme $scheme;
        proxy_redirect off;
        proxy_max_temp_file_size 0;
    }
}

何か案は?これは私を怒らせています!

1
Paul Sanders

問題はserver_name行にあると思います。

現在実装されているため、次の種類のリクエストに一致します。

  • Host:ヘッダーはexample.comです
  • Host:で終わるヘッダー.example.com
  • Host:ヘッダーがありません

これは、この構成が任意のドメインと一致しないことを意味します。これは、あなたが望んでいることのように見えます。

これで、構成に次のような別のserverブロックがある可能性があります。

443 ssldefault_serverをリッスンします。

このディレクティブを含む仮想ホストは、他の方法では一致しないリクエストのキャッチオール仮想ホストです。

したがって、問題を修正するには、現在のserverブロックからdefault_serverディレクティブを削除し、このブロックのlistenディレクティブにdefault_serverを追加する必要があります。 。

1
Tero Kilkanen