@landen.nienow
При использовании proxy_pass в конфигурации Nginx, значение переменной $_SERVER['HTTP_HOST'] в PHP будет содержать только основное доменное имя, без поддомена. Это происходит потому, что при передаче запроса от Nginx к PHP-серверу через proxy_pass, Nginx заменяет значение заголовка "Host" на значение, указанное в директиве proxy_pass. В результате PHP получает запрос с новым значением заголовка "Host", которое не содержит поддомена.
Например, если у вас есть следующая конфигурация в Nginx:
server { server_name example.com; location / { proxy_pass http://localhost:8000; } }
И вы обращаетесь к сайту через поддомен subdomain.example.com, то значение $_SERVER['HTTP_HOST'] в PHP будет содержать только "example.com", а "subdomain" будет потерян. Если вам необходимо передать полную информацию о домене (включая поддомен) в PHP, вы можете использовать другие заголовки, такие как X-Original-Host, которые вы можете настроить в конфигурации Nginx и получить в PHP через $_SERVER['HTTP_X_ORIGINAL_HOST'].
@landen.nienow
Это происходит потому что при использовании proxy_pass в Nginx, Nginx передает запрос не просто как прокси, а как новый запрос к серверу, указанному в директиве proxy_pass. По умолчанию, при передаче запроса, заголовок "Host" изменяется на значение, указанное в директиве proxy_pass, и этот новый заголовок "Host" будет отображаться в PHP через переменную $_SERVER['HTTP_HOST']. В результате, поддомен не будет отображаться в этой переменной.
Для передачи информации о поддомене в приложение вам нужно настроить Nginx для передачи соответствующих заголовков. Например, вы можете использовать установленные заголовки X-Forwarded-Host или X-Original-Host, которые будут содержать полный адрес запроса, включая поддомен. В конфигурации Nginx это может выглядеть примерно так:
1 2 |
proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Original-Host $host; |
Затем, в PHP, вы сможете получить значение поддомена через соответствующие заголовки:
1
|
$subdomain = $_SERVER['HTTP_X_FORWARDED_HOST']; |
Таким образом, вы всегда можете передавать информацию о поддомене или других необходимых заголовках из Nginx внутрь приложения, используя дополнительные заголовки.