Hosten einer WordPress- und einer Laravel-Anwendung über Nginx

Hosten einer WordPress- und einer Laravel-Anwendung über Nginx

Es ist bedauerlich, aber ich bin gezwungen, eine WordPress- und eine Laravel-Anwendung nicht nur koexistieren zu lassen, sondern auch den Status des jeweils anderen zu kennen. Dies funktioniert bei mir über ein WordPress-Plugin, ein Laravel-Paket und eine Apache-Konfiguration, aber jetzt muss ich die Konfiguration übersetzen, damit sie mit Nginx als Webserver funktioniert.

Mein Repository ist wie folgt eingerichtet:

/src- Laravel-Anwendung, darunter /public enthält den index.php-Einstiegspunkt in die Anwendung

/wordpress- WordPress-Anwendung

Ich habe die folgende Apache VirtualHost-Konfiguration, die funktioniert und genau das tut, was ich brauche:

<VirtualHost *:80>
    ServerName app.local
    DocumentRoot /var/www/vhosts/app.local/wordpress
    ErrorLog /var/www/vhosts/logs/app_local_error_log

     <Directory "/var/www/vhosts/app.local/wordpress">
         Options Indexes FollowSymlinks MultiViews
         AllowOverride All
         Require all granted
         DirectoryIndex index.php
    </Directory>

    <Directory /var/www/vhosts/app.local/src/public>
            DirectoryIndex index.php
            Options FollowSymLinks MultiViews
            AllowOverride All
    </Directory>

     Alias /xyz /var/www/vhosts/app.local/src/public

     <Location "/xyz">
         AllowOverride All
     </Location>
</VirtualHost>

Alles unter /xyz wird speziell von Laravel gehandhabt. Alles andere, einschließlich Root, wird von WordPress gehandhabt.

Hier ist meine Nginx-Konfiguration (ich teste sie lokal mit einer Laravel/Homestead-Box):

server {
listen 80;
server_name .app.local;
root "/home/vagrant/code/app/wordpress";

index index.html index.htm index.php;

charset utf-8;

location /xyz/ {
    alias /home/vagrant/code/app/src/public/;
    try_files $uri $uri/ /index.php?$query_string;
}

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

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt  { access_log off; log_not_found off; }

access_log off;
error_log  /var/log/nginx/app.local-error.log error;

sendfile off;

client_max_body_size 100m;

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

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

Ich denke, ich bin sehr nah dran, aber es scheint, dass WordPress die Anfrage immer noch bearbeitet, egal ob ich aliasoder verwende root, den Pfaden abschließende Schrägstriche anhänge oder die Standortanweisungen umstelle. Ich weiß einfach nicht genug über Nginx, um das zu debuggen, oder welche Alternativen ich in Bezug auf die Konfiguration habe. Für jede Hilfe wäre ich sehr dankbar!

Ich habe auch versucht, eine spezielle Standortanweisung festzulegen und die Parameter anzupassen, die ich an FastCGI übergebe, wie hier zu sehen ist, aber das scheint keine Wirkung zu haben:

https://gist.github.com/mnshankar/9642844

verwandte Informationen