$ _SERVER ['SERVER_NAME'] retorna nginx porta / nome do proxy reverso

1

Estou executando o WordPress na seguinte configuração:

Verniz (Porto 80) - > nginx (porta 8080)

Isso tudo está funcionando bem, exceto quando algum plug-in ou outro tenta obter o nome do meu servidor usando $_SERVER['SERVER_NAME'] . Quando isso acontece, ele está recebendo de volta _:8080 como meu nome de servidor e porta. Isto é o que a configuração do nginx tem:

server {
listen 8080;
server_name _;

O que eu preciso é retornar domain.com mas se eu mudar a configuração do nginx, obviamente, ele para de escutar na porta que precisa ser (8080) (mas mudar o server_name funciona bem) ).

Como posso fazer o nginx escutar no 8080 mas ter $_SERVER['SERVER_NAME'] retornando a porta correta (ou melhor, não acrescentar a porta errada)?

    
por Andy Affleck 31.07.2018 / 20:38

2 respostas

1

_:8080 é o valor correto para $_SERVER['SERVER_NAME'] nessa configuração. É explicitamente definido para retornar o valor de server_name . Na documentação :

The name of the server host under which the current script is executing. If the script is running on a virtual host, this will be the value defined for that virtual host.

Parece que você está procurando por $_SERVER['HTTP_HOST'] . Note que você também não precisa ter configurado o Varnish para alterar o cabeçalho da solicitação Host: .

    
por 31.07.2018 / 20:48
0

Você pode substituir o valor padrão de $_SERVER['SERVER_NAME'] adicionando uma diretiva fastcgi_param após a instrução include fastcgi_params; .

Por exemplo:

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param  SERVER_NAME  $http_host;
    ...
}

O valor definido no arquivo de inclusão será sobrescrito silenciosamente com o valor de $http_host .

    
por 31.07.2018 / 21:10