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-For
funciona de forma semelhante.)