構成ファイルには、次で始まるserver
ディレクティブブロックがあります...
server {
server_name www.example1.com www.example2.com www.example3.com;
...異なるドメイン名でサイトにアクセスできるようにするため。
ただし、PHPの$_SERVER['SERVER_NAME']
は常にserver_name
の最初のエントリを返します。この場合はhttp://www.example1.com
だから、PHPコードから、ユーザーがサイトへのアクセスに使用したドメインを知る方法はありません。
サイトへのアクセスに使用される実際のドメイン名を渡すようにnginx/fastcgiに指示する方法はありますか?
私がこれまでに見つけた唯一の解決策は、server
ブロック全体を各ドメインに対して個別のserver_name
エントリで繰り返すことですが、明らかにより良いものを探しています。
SERVER_NAME
設定で$Host
を使用するようにfastcgi_params
を設定します。
fastcgi_param SERVER_NAME $Host;
ソース: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param
これは意図的なものであり、適切な解決策は、代わりにコードで$_SERVER['HTTP_Host']
を使用することです。
SERVER_NAME
を検証済みサーバー名として解釈し、HTTP_Host
をユーザー入力として解釈する必要があります。