У меня в корневом каталоге веб-сайта (/var/www) есть несколько сайтов, например site1, site2 и т. д., и я настроил Nginx следующим образом:
## PHP-FPM Servers ##
upstream localhost-php-fpm {
server unix:/var/run/php/php7.3-fpm.sock;
}
server {
server_name localhost;
listen 80;
root /var/www;
index index.php index.html index.htm;
location /site1/web {
try_files $uri $uri/ /site1/web/index.php?$args;
}
location /site2/web {
try_files $uri $uri/ /site2/web/index.php?$args;
}
# pass to php-fpm
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass localhost-php-fpm;
fastcgi_index index.php;
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 15000;
}
}
Когда я запрашиваю корень сайта, например http://localhost/site1/web
, открывается окно загрузки для загрузки index.php. Но когда я запрашиваю какой-либо путь, http://localhost/site1/web/dashboard
все работает нормально.
решение1
Вам необходимо добавить try_files
директиву в последний location
блок.