В моем файле конфигурации есть блок управления 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
как пользовательский ввод, который можно легко модифицировать и, следовательно, не следует доверять.