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.