Я постоянно сталкиваюсь с этой ошибкой при попытке загрузить приложение Laravel на сервер Ubuntu+Nginx.
Пользователь должен посетить app.example.com/my-app
и загрузить содержимое/var/www/app/my-app/public/index.php
[ошибка] 9028#0: *15001 индекс каталога "/var/www/app/my-app/" запрещен, клиент: xxx.xxx.xxx.xx, сервер: app.example.com, запрос: "GET /my-app/ HTTP/1.1", хост: "app.example.com"
Мой конфиг nginx выглядит следующим образом:
server
{
server_name app.example.com www.app.example.com;
root /var/www/app;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$
{
#fastcgi_pass unix:/dev/shm/php-fpm-www.sock;
fastcgi_pass 127.0.0.1:7777;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
location ~ /\.ht
{
deny all;
}
location /my-app/{
alias /var/www/app/my-app/public/;
try_files $uri $uri/ /public/index.php?$query_string;
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#fastcgi_index index.php;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:7777;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}
Я попробовал следующее:
- Установка разрешений
chown -R www-data /var/www/app/my-app
, которые не имели никакого значения - Корректировка
alias
каталоговtry_file
и не привела к изменению ошибки или помощи
решение1
Ошибка возникает из-за $uri/
части предложения try_files, которая предписывает nginx обслуживать содержимое каталога /var/www/app/my-app/. По умолчанию листинг каталогов запрещен, вы можете включить его, добавив autoindex on;
в location.
Похоже, файл /var/www/app/my-app/public/index.php не существует.