如何解决laravel 项目的 nginx 动态 doute 使用第一个参数
嗨,我是 Laravel 开发人员。在 envato 工作。我有一些 Laravel 项目。我想为我的 Laravel 项目进行自定义配置。
示例
-
http://demo.jubayed.com/demo5/
root demo.jubayed.com/$demoProject/
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;
}
}
解决方法
您可能希望使用 alias
而不是 root
,因为您需要操作 URI 以将 public
插入到路径名中。有关详细信息,请参阅 this document。
您还需要为 PHP 使用嵌套的 location
,因为它需要访问相同的路径名。
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;
}
}
由于 long term issues,我避免在同一块中使用 try_files
和 alias
。有关 if
的使用,请参阅 this caution。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。