#php #laravel #nginx #dynamic #path
Вопрос:
привет, я разработчик laravel. работаю в envato. у меня есть какой-то проект laravel . я хотел бы создать пользовательскую конфигурацию для своих проектов laravel.
пример
- http://demo.jubayed.com/demo1/
- http://demo.jubayed.com/demo2/
- http://demo.jubayed.com/demo3/
- http://demo.jubayed.com/demo4/
- http://demo.jubayed.com/demo5/
корень demo.jubayed.com/$Демопроект/
server {
listen 80;
server_name demo.jubayed.com;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location /($demoProject)/ {
try_files $uri $uri/ /index.php?$query_string;
root /var/www/$demoProject/public;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location = /sitemap.xml { access_log off; log_not_found off; }
error_page 404 /index.php;
# error_page 500 /index.php;
# error_page 401 /index.php;
# error_page 403 /index.php;
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.(?!well-known).* {
deny all;
}
}
Ответ №1:
Возможно, вы захотите использовать alias
вместо root
того, чтобы, как вам нужно, манипулировать URI для вставки public
в путь. Подробности см. в этом документе.
Вам также нужно будет использовать вложенный location
для PHP, так как ему нужен доступ к тому же имени пути.
location ~ ^/(?<project>[^/] )/(?<suffix>.*)$ {
alias /var/www/$project/public/$suffix;
if (!-e $request_filename) { rewrite ^ /$project/index.php last; }
location ~ .php$ {
if (!-f $request_filename) { return 404; }
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
Я избегаю использования try_files
и alias
в одном блоке из-за долгосрочных проблем. См .Это предупреждение об использовании if
.