Подтвердить что ты не робот

Nginx "server" с несколькими записями "server_name": всегда первый передается PHP $_SERVER ['SERVER_NAME']

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

4b9b3361

Ответ 2

Это предназначено, и правильным решением является использование $_SERVER['HTTP_HOST'] в вашем коде.

Вы должны интерпретировать SERVER_NAME как проверенное имя сервера и HTTP_HOST как пользовательский ввод, который можно легко модифицировать и, следовательно, не следует доверять.