Я использую Laravel в серверном блоке и хочу создать псевдоним, например / webmail. Это приводит к nginx "Primary script unknown
"ошибка. Думаю, мне нужно изменить fastcgi_param
. Может кто-нибудь помочь мне?
Ниже приведена важная часть моего серверного блока Nginx.
server {
listen 80 default_server;
server_name _;
set $root_path '/var/www/html/public';
root $root_path;
index index.php index.html index.htm;
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index /index.php;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /webmail {
root /var/www/;
}
}
Итак, мое приложение для веб-почты находится в /var/www/webmail
.
Веб-почта работает, когда я меняю SCRIPT_FILENAME
кому:
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
Однако после этого изменения корневой домен больше не работает. Я не могу разместить строку выше в разделе местоположения.
Попробуйте эту конфигурацию:
server {
listen 80 default_server;
server_name _;
set $root_path '/var/www/html/public';
root $root_path;
index index.php index.html index.htm;
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index /index.php;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $root_path;
}
location /webmail {
set $root_path '/var/www';
root $root_path;
}
}
Итак, мы передаем в PHP другой префикс корневого файла документа / скрипта в зависимости от местоположения. По умолчанию у нас есть $root_path
установлен в /var/www/html/public
и дальше /webmail
мы установили это на /var/www
.
Возможно, вам потребуется добавить отдельный rewrite
/ try_files
раздел в /webmail
место, так что index.php
или любой другой сценарий записи веб-почты по умолчанию. Для этого вам нужно посмотреть документацию вашей веб-почты.