Я пытался разместить Flarum в подкаталоге с Laravel, находящимся в корне каталог. Я пробовал несколько вещей, и единственный ответ, который я получаю от сервера, - это либо 404, либо загруженный laravel index.php (когда я посещаю /forum).
Насколько я помню, я пробовал :
местоположения ~ \ .php
для каждого подкаталога. ] Мои настройки следующие:
Laravel прорабатывает весь процесс, но мне не удается заставить работать flarum.
server {
listen 80;
server_name website.web
return 301 https://website.web$request_uri;
}
server {
listen 443 ssl;
server_name website.web
access_log /var/www/logs/access.log;
error_log /var/www/logs/error.log warn;
ssl_certificate /var/www/ssl/website.chained.crt;
ssl_certificate_key /var/www/ssl/website.key;
root /var/www/laravel/public/;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /forum/ {
root /var/www/;
try_files $uri $uri/ /index.php?$query_string;
}
location /forum/admin/ {
root /var/www/;
try_files $uri $uri/ /admin.php?$query_string;
}
location /forum/api/ {
root /var/www/;
try_files $uri $uri/ /api.php?$query_string;
}
location /flarum {
deny all;
return 404;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Если конфигурация не работает по какой-то причине, то вот ссылка на pastebin.
У вас есть два приложения с разными корнями документов, которым требуется поддержка PHP. Если вы сохраните конфигурацию Laravel без изменений, вы можете использовать вложенные блоки местоположения для реализации конфигурации Flarum.
Что-то вроде этого может сработать:
location ^~ /forum {
root /var/www;
try_files $uri $uri/ /forum/index.php?$query_string;
location ~ \.php$ {
try_files $uri /forum/index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /forum/admin {
try_files $uri $uri/ /forum/admin.php?$query_string;
}
location /forum/api {
try_files $uri $uri/ /forum/api.php?$query_string;
}
}
Обратите внимание на следующее:
location ^ ~ / forum
- это префикс расположение, имеющее приоритет над верхнего уровня, расположение ~ \ .php $
, которое позволяет вложенному расположению обрабатывать сценарии PHP для Flarum.
/forum/index.php
является URI и префикс / forum /
необходимы, чтобы выбрать правильный файл index.php
. Вам не нужен URI по умолчанию и = 404
в директиве try_files
(то или другое, пожалуйста). Я удалил строки fastcgi
, которые ничего не делают. И включать fastcgi_params
перед другими директивами fastcgi_param
, чтобы избежать непреднамеренных побочных эффектов.
Это общее решение, и я на самом деле не тестировал его с Laravel или Flarum.
Подробнее см. Документацию здесь .