Nginx 0.7.43 para proxypassar um site do Wordpress para o Apache 2.4 + PHP 5.6

1

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

seção nginx adicionada (alguns testes comentados foram deixados intencionalmente, eu 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 (somente material relevante em 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 do Wordpress é exibido, mas parece que nenhum código PHP é executado. Eu posso ver apenas a parte HTML.

Firefox: navegar pelo site do Wordpress causa redirecionamentos em 127.0.0.1 ...

Safari: funciona! é exibido ...

Estranhamente, em todos os navegadores, se eu procurar link e executar login ... eu posso entrar no Painel e tudo é exibido perfeitamente!

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

O que eu sinto falta aqui?

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

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

A migração já está planejada quando o 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 ter que redirecionar para 127.0.0.1, por exemplo, e executar corretamente o PHP Code no Apache?

Obrigado!

    
por KRiSh05 08.10.2015 / 12:22

1 resposta

0

Você pode definir (e usar) cabeçalhos adicionais para o proxy na 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) irá trabalhar com um ou mais destes, bem como $Host (para que ele saiba qual site está sendo solicitado).

Isso deve permitir que o PHP do Apache reconheça os dados adicionais e, essencialmente, diga "Oh, isso NÃO se originou do localhost, sua origem é de $remote_addr ". ( $remote_addr é uma variável que indica o endereço IP real da fonte real e o X-Forwarded-For funciona de maneira semelhante.)

    
por 08.10.2015 / 15:13