nginx installiere WordPress auf /blog unter meiner Domänenadresse

nginx installiere WordPress auf /blog unter meiner Domänenadresse

Ich habe eine Domäne example.com, die meine Website über einen Nginx-Webserver bedient, der über proxy passdie Option unter /„Standort“ auf den Port 3000 eines Node.JS-Docker-Containers verweist.

server {
    listen 80 default_server;
    server_name example.com www.example.com;
    index index.php index.html;
    access_log /var/log/nginx/access_example.com.log;
    error_log /var/log/nginx/error_example.com.log;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

jetzt möchte ich eine WordPress-Website hinzufügen, /blogalso habe ich diese Konfiguration unter dem Serverblock hinzugefügt.

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location /blog {
        root /var/www;
        try_files $uri $uri/ =404;
    }

Warum kann ich nicht auf das neu installierte WordPress zugreifen, /var/www/blog/ wenn ich es auf meinem Terminal ausführe curl http://example.com/blog/license.txt? Es ist in Ordnung und ich kann den Inhalt der license.txtDatei darunter sehen /var/www/blog/, aber index.phpnicht die geladene index.html, die ich zum Test hinzugefügt habe.

Ich denke, das Problem liegt an try_files $uri $uri/ =404;der Leitung, aber ich habe nichts Hilfreiches gefunden. Jede Hilfe wird geschätzt

Antwort1

Wie Sie wahrscheinlich wissen, verwendet Wordpress eine Front-Controller-Architektur. Der Einstiegspunkt zum Ausführen eines PHP-Skripts ist also $WORDPRESS_ROOT/index.php. Sie müssen nginx anweisen, die Anfragen entsprechend weiterzuleiten:

try_files $uri $uri/ /blog/index.php?$args;

Beachten Sie, dass Anfragen für die meisten statischen Inhalte von einem der ersten beiden Werte verarbeitet werden. Es gibt keinen 404-Handler, da Wordpress das Szenario selbst verarbeiten muss.

aber index.php wurde nicht geladen

hmmm, keine sehr aussagekräftige Beschreibung dessen, was passiert ist – haben Sie also explizit nach ..../index.php oder nur nach .../ gefragt? Welche Antwort haben Sie erhalten? Was stand in Ihren Protokollen?

Für PHP (und die meisten FCGI-Handler) ist eine ganze Menge Konfiguration erforderlich, die normalerweise an anderer Stelle in Ihrer Konfiguration enthalten ist. Unter Ubuntu hätte ich erwartet, dass dies bereits vorhanden ist, wenn es aus dem Repo installiert wird, aber es wäre ratsam, dies auszuprobieren. Ich würde auch vorschlagen, dies zu beheben, BEVOR Sie die oben genannte Front-Controller-Änderung vornehmen, da dies die Sache etwas komplizierter machen würde. Verwenden Sie ein einfaches „Hallo Welt“-PHP-Skript.

verwandte Informationen