Nginx 0.7.43 zum Proxypassen einer Wordpress-Site an Apache 2.4 + PHP 5.6

Nginx 0.7.43 zum Proxypassen einer Wordpress-Site an Apache 2.4 + PHP 5.6

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_addrist eine Variable, die die echte IP-Adresse der echten Quelle angibt und X-Forwarded-Forähnlich funktioniert.)

verwandte Informationen