web-dev-qa-db-ja.com

Nginx埋め込み変数-リクエストで使用されているドメイン名をどのように取得しますか?

1つのサーバーで複数のドメイン名を使用する場合、現在リクエストで使用されているドメイン名を取得するにはどうすればよいですか?その構成ファイルでNginxの埋め込み変数を使用しています。

OpenSSLを設定しましたが、最初のドメインで正常に機能するリダイレクトがあります。これは、ご覧のように、構成ファイルの下部で明示的にリダイレクトしているためです。したがって、他のドメインでのHTTPリクエストは、安全な接続のために最初のドメインにリダイレクトします。たとえば$request_uriのように使用できる埋め込み変数はありますが、クライアントが使用する特定のドメイン名を返すだけですか?

これが、リダイレクトを実行しているサーバーブロックです。

server {
        listen 80;
        listen [::]:80;
        server_name example.com example1.com example2.com example3.com;
        location / {
                return 301 https://example.com$request_uri;
        }
}

そして、私の設定の残りの部分: https://Pastebin.com/HgnZ0aBe

2
Ethan Wilkins

リクエストで使用されるドメイン名は、基本的にホストリクエストヘッダーです。 nginxでは、ホストヘッダーの変数は$ Hostです。したがって、ドメイン名/ホストに基づいてリダイレクトする場合は、設定を次のように変更する必要があります。

return 301 https://$Host$request_uri;

この助けを願っています。ありがとう

4
Ilham Sulaksono