Nginx 0.7.43 para proxypass de um site Wordpress para Apache 2.4 + PHP 5.6

Nginx 0.7.43 para proxypass de um site Wordpress para Apache 2.4 + PHP 5.6

Estou tentando usar um nginx existente em execução na porta 80, para passar por proxy para o Apache que atende um site Wordpress.

Seção nginx adicionada (alguns testes comentados foram deixados intencionalmente, tentei tantas versões, desculpe se parece errado):

upstream wordpress {
    server 127.0.0.1:5000;
}

server {
    server_name media.raw-news.net;
    access_log /home/plumi/PLUMI/plumi.app/var/log/wordpress-access.log;
    error_log /home/plumi/PLUMI/plumi.app/var/log/wordpress-error.log;

    #root /usr/local/apache2/htdocs/;

    location / {
        proxy_redirect off;
        proxy_pass http://wordpress;
        proxy_connect_timeout 75;
        proxy_read_timeout 185;
    }

 location ~ .*\\.(php)$ {

  proxy_pass         http://wordpress;
  proxy_redirect     off;

  proxy_set_header   Host             $host;
  proxy_set_header   X-Real-IP        $remote_addr;
  proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

  client_max_body_size       10m;
  client_body_buffer_size    128k;

  proxy_connect_timeout      90;
  proxy_send_timeout         90;
  proxy_read_timeout         90;

  proxy_buffer_size          4k;
  proxy_buffers              4 32k;
  proxy_busy_buffers_size    64k;
  proxy_temp_file_write_size 64k;
 }

}

Meu Apache está rodando na porta 5000 com PHP habilitado (apenas coisas relevantes de php):

LoadModule php5_module        modules/libphp5.so

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

AddType text/html .php
AddHandler php5-script  .php

O efeito agora é que:

Chrome: o site Wordpress é mostrado, mas parece que nenhum código PHP foi executado. Só consigo ver a parte HTML.

Firefox: navegar no site Wordpress causa redirecionamento em 127.0.0.1...

Safári: Funciona! é exibido...

Estranhamente, em todos os navegadores, se eu navegarhttp://media.example.net/wp-admine faça o login.. consigo entrar no Dashboard e tudo é exibido perfeitamente!

Todas as imagens estão lá, o código PHP é executado... mas somente após o login no Dashboard!

O que estou perdendo aqui ?

Não criei nenhum VirtualHost no Apache, é um servidor Apache 2.4 simples com o site Wordpress dentro do DocumentRoot padrão.

Não consigo migrar para uma versão mais recente do nginx porque ele está executando um site de produção.

A migração já está planejada quando Plumi lançar oficialmente o 4.5.2 no Debian 8.

Existe alguma configuração preferida/funcional para passar corretamente todo o conteúdo do Wordpress para o meu Apache sem precisar redirecioná-lo para 127.0.0.1, por exemplo, e executar corretamente o código PHP no Apache?

Obrigado !

Responder1

Você pode querer definir (e usar) cabeçalhos adicionais para proxy para a instância do Apache, como estes:

proxy_set_header    X-Real-IP         $remote_addr;
proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;

A maioria dos back-ends (incluindo Apache e PHP) também funcionará com um ou mais deles $Host(para saber qual site está sendo solicitado).

Essedeveentão permita que o PHP do Apache reconheça os dados adicionais e diga essencialmente "Oh, isso NÃO se originou do host local, sua origem real é de $remote_addr". ( $remote_addré uma variável que indica o endereço IP real da fonte real e X-Forwarded-Forfunciona de forma semelhante.)

informação relacionada