Obtendo SERVER_PORT correto para php-fpm através de nginx e verniz

5

O objetivo é obter conhecimento do PHP sobre a interface de servidor correta voltada para a Web.

A configuração é:

O nginx na porta 443 inverte o proxy para verniz na porta 80 inverta o proxy para o nginx na porta 8008 e executa o php-fpm como um fastcgi.

acertar 80 ou 443 ambos funcionam bem, exceto que $ _SERVER ['SERVER_PORT'] em php está sempre mostrando 8008 por padrão. Eu posso codificar um fastcgi_param server_port mas ele só será correto para 80 ou 443, mas não para ambos.

# default
fastcgi_param  SERVER_PORT        $server_port;
# harcode to 80
fastcgi_param  SERVER_PORT        80;

Como posso obter a porta do servidor adequada para o exterior disponível para php?

    
por MDrollette 06.04.2011 / 05:48

1 resposta

15

Encontrei minha própria resposta

No nginx SSL, isso ...

   proxy_set_header X-Forwarded-Proto https;

depois no verniz, isso ...

 sub vcl_recv {
   if (req.http.X-Forwarded-Proto == "https" ) {
     set req.http.X-Forwarded-Port = "443";
   } else {
     set req.http.X-Forwarded-Port = "80";
     set req.http.X-Forwarded-Proto = "http";
   }
 }

então no nginx final, isso ...

fastcgi_param  SERVER_PORT        $http_x_forwarded_port;
    
por 06.04.2011 / 07:26