Ich versuche, ein vorhandenes Nginx, das auf Port 80 läuft, als Proxypass an Apache weiterzuleiten, das eine Wordpress-Website bedient.
Nginx-Abschnitt hinzugefügt (einige kommentierte Tests wurden absichtlich belassen, ich habe so viele Versionen ausprobiert, tut mir leid, wenn es falsch aussieht):
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;
}
}
Mein Apache läuft auf Port 5000 mit aktiviertem PHP (nur relevante PHP-Sachen):
LoadModule php5_module modules/libphp5.so
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
AddType text/html .php
AddHandler php5-script .php
Die Wirkung ist derzeit:
Chrome: Die Wordpress-Website wird angezeigt, aber es sieht so aus, als würde kein PHP-Code ausgeführt. Ich kann nur den HTML-Teil sehen.
Firefox: Beim Durchsuchen der Wordpress-Site wird die Weiterleitung auf 127.0.0.1 durchgeführt ...
Safari: Es funktioniert! wird angezeigt...
Seltsamerweise, auf allen Browsern, wenn ich surfehttp://media.example.net/wp-adminund führe die Anmeldung durch. Ich kann das Dashboard aufrufen und alles wird perfekt angezeigt!
Alle Bilder sind da, PHP-Code wird ausgeführt... aber erst nach dem Einloggen im Dashboard!
Was übersehe ich hier?
Ich habe keinen VirtualHost in Apache erstellt, es ist ein einfacher Apache 2.4-Server mit der Wordpress-Site im Standard-DocumentRoot.
Ich kann nicht auf eine neuere Nginx-Version migrieren, da darauf eine Produktionswebsite ausgeführt wird.
Die Migration ist bereits geplant, wenn Plumi die Version 4.5.2 offiziell auf Debian 8 veröffentlicht.
Gibt es eine bevorzugte/funktionierende Konfiguration, um den gesamten Wordpress-Inhalt per Proxy ordnungsgemäß an meinen Apache weiterzuleiten, ohne dass er beispielsweise auf 127.0.0.1 umgeleitet werden muss, und um PHP-Code ordnungsgemäß auf Apache auszuführen?
Danke !
Antwort1
Möglicherweise möchten Sie zusätzliche Header für das Proxying zur Apache-Instanz festlegen (und verwenden), etwa diese:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Die meisten Backends (einschließlich Apache und PHP) funktionieren mit einem oder mehreren davon $Host
(so dass sie wissen, welche Site angefordert wird).
Dassollendann lassen Sie zu, dass Apaches PHP die zusätzlichen Daten erkennt und im Wesentlichen sagt: „Oh, das stammt NICHT vom lokalen Host, der tatsächliche Ursprung ist von $remote_addr
“. ( $remote_addr
ist eine Variable, die die echte IP-Adresse der echten Quelle angibt und X-Forwarded-For
ähnlich funktioniert.)