У меня большая головная боль при настройке Nginx для работы внутри блока местоположения.
Я разрабатываю веб-приложение с Laravel, и оно находится по адресу /srv/http/zenith
. В Laravel индекс находится внутри папки public
, поэтому я пытаюсь добраться до него, используя следующую конфигурацию:
location /zenith/ {
root /srv/http/zenith/public;
try_files $uri $uri/ /index.php?$query_string;
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Но каждый раз выдает ошибку 404. Как я прочитал в документации Nginx, Nginx не удаляет путь из URI, поэтому даже внутри блока /zenith/
все URI по-прежнему начинаются с /zenith/
. Таким образом, example.com/zenith
указывает на /srv/http/zenith/public/zenith
, когда я хочу /srv/http/zenith/public
.
Как исправить эту ошибку? Я ожидал, что Nginx автоматически удалит эту ненужную часть, но, похоже, это не так.