директива nginx "server" с несколькими записями "server name": всегда первая передается на $ SERVER PHP ['имя сервера']
мой файл конфигурации имеет 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
вход, но, очевидно, я ищу лучший.
2 ответов
Set 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
как пользовательский ввод, который можно легко изменить и, следовательно, не следует доверять.