Nginx als Reverse-Proxy für Apache, PHP fordert zum Download auf, anstatt ausgeführt zu werden

Nginx als Reverse-Proxy für Apache, PHP fordert zum Download auf, anstatt ausgeführt zu werden

Ich versuche, Nginx als Reverse-Proxy für Apache auf einem CentOS 7-Server zu erstellen.

Folgendes habe ich bisher getan:

Erstellen Sie eine Konfigurationsdatei für Nginx:nano /etc/nginx/conf.d/default.conf

server {
    listen   80; 

    root /usr/share/nginx/html/; 
    index index.php index.html index.htm;

    server_name _; 

    location / {
    try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {

    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;

     }

     location ~ /\.ht {
            deny all;
    }
}

Ändern Sie 2 Zeilen in/etc/httpd/conf/httpd.conf:

Listen 127.0.0.1:8080
DocumentRoot "/usr/share/nginx/html/" 

Ich habe eine Datei namens info.php in /usr/share/nginx/html erstellt und <?php infophp();?>dort abgelegt, aber wenn ich versuche, die Seite zu ladenhttp://Meine_Ip/info.phpIch erhalte ein Popup zum Herunterladen der Datei, obwohl ich möchte, dass die Datei ausgeführt wird.

Ich habe diesen Befehl übergebenhttpd -M | grepphp, um zu sehen, ob das PHP-Modul auf meinem Apache-Webserver vorhanden ist, und ich erhalte „php7_module (shared)“, also nehme ich an, dass dies der Fall ist.

Ich wäre für jede Hilfe dankbar, danke.

Henry

ps: wenn ich weitermachehttp://Meine_IPIch bekomme die Standard-Startseite von Nginx p.s2: Für diejenigen, die fragen, ich habe bereits über ein ähnliches Problem auf Serverfault gepostet (Fehler 403), aber es scheint, dass ich das Problem nicht mehr habe (d. h. wenn ich gehe, um zu sehenhttp://Meine_IP/jede_CSS-Datei.csszum Beispiel, es wird gut angezeigt, kein Fehler)

Antwort1

Sie müssen eine Instanz von PHP FPM auf Ihrem Server laufen haben, um die PHP-Skripte ausführen zu können. Sie können dies überprüfen, indem Sie ausführen

find / -type d -iname *fpm*

Wenn dies Ergebnisse zurückgibt, ist es bereits installiert. Um nun herauszufinden, auf welchem ​​Port/Socket es lauscht, können Sie Folgendes ausführen:

find / -type d -iname *fpm* | xargs grep -r "^listen[= ]"

Das Ergebnis sollte ungefähr so ​​aussehen:

/etc/php/7.2/fpm/pool.d/www.conf:listen = /run/php/php7.2-fpm.sock

In Ihrem Nginx-Konfigurationsverzeichnis (normalerweise /etc/nginx/) haben Sie möglicherweise bereits eine Datei fastcgi_params, wenn nicht, erstellen Sie eine und kopieren Sie das BeispielHier

Ändern Sie dann Ihren PHP-Standortblock, um Ihre Konfigurationsdatei einzuschließen, und übergeben Sie die Anforderung an PHP FPM unter Verwendung des Ports/Sockets, der vom vorherigen Befehl zurückgegeben wurde, wie folgt:

location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        include fastcgi_params;
    }

Starten Sie jetzt Nginx neu und es sollte funktionieren.

verwandte Informationen