Хостинг приложений WordPress и Laravel через Nginx

Хостинг приложений WordPress и Laravel через Nginx

Это прискорбно, но я вынужден сделать так, чтобы приложения wordpress и laravel не только сосуществовали, но и знали о состоянии друг друга. У меня это работает через плагин wordpress, пакет laravel и конфигурацию Apache, но теперь мне нужно перевести конфигурацию для работы с nginx в качестве веб-сервера.

Мой репозиторий настроен следующим образом:

/src- приложение laravel, в котором /public содержит точку входа index.php в приложение

/wordpress- приложение WordPress

У меня есть следующая конфигурация Apache VirtualHost, которая работает и делает именно то, что мне нужно:

<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>

Все, что находится под /xyz, обрабатывается laravel. Все остальное, включая root, обрабатывается wordpress.

Вот мой конфиг nginx (я тестирую его локально с помощью laravel/homestead):

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;
}
}

Я чувствую, что я очень близок, однако, похоже, что WordPress все равно в конечном итоге обрабатывает запрос независимо от того, использую ли я aliasили root, добавляю ли завершающие слеши к путям или переставляю директивы местоположения. Я просто недостаточно знаю о nginx, чтобы отладить это, или какие у меня есть альтернативы в плане конфигурации. Любая помощь будет высоко оценена!

Я также пробовал задать определенную директиву местоположения и настроить параметры, которые я передаю в fastcgi, как показано здесь, но, похоже, это не дало никакого эффекта:

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

Связанный контент