今天有个朋友询问tp5支持pathinfo的nginx配置怎么写的问题,所以想着自己总结分享下,下面这篇文章主要给大家介绍了关于在Nginx下ThinkPHP5的配置方法,需要的朋友可以参考借鉴,下面话不多说,来一起看看吧。 在Nginx服务器环境下配置ThinkPHP5框架是一个常见的任务,特别是在构建基于PHP的Web应用程序时。这篇文章主要讨论了如何在Nginx下正确配置ThinkPHP5以支持PATHINFO模式,这是ThinkPHP5推荐的一种URL模式,它使得URL更加美观且易于SEO优化。 ThinkPHP5为了提高安全性,将入口文件`index.php`移动到了`public`子目录下。因此,Nginx的`root`指令应该指向项目根目录下的`public`子目录,例如: ```nginx root /web/wwwroot/augsky.com/public; ``` 这样做可以防止用户直接访问到如`/thinkphp/`、`/vendor/`等敏感目录,避免代码泄露或被恶意利用。 接下来,为了隐藏`index.php`并实现PATHINFO模式,我们需要配置Nginx的`location`块。这通常涉及`try_files`指令,它会尝试匹配一系列文件,如果找不到,就将请求传递给`index.php`处理。配置如下: ```nginx location / { try_files $uri $uri/ /index.php?s=$uri&$args; } ``` `try_files`指令的参数依次检查 `$uri`、`$uri/` 和 `/index.php?s=$uri&$args`,确保任何非文件或非目录的请求都会被`index.php`处理,同时保留原有的URI参数。 对于PATHINFO的支持,ThinkPHP5需要Nginx配合FastCGI处理PHP请求。配置FastCGI部分,需要定义变量`$path_info`和`$real_script_name`,以便正确传递PATHINFO信息给PHP-FPM。配置如下: ```nginx location ~ \.php(/|$) { set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_pass unix:/tmp/php-cgi.sock; # 根据实际PHP-FPM配置调整 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; include fastcgi_params; } ``` `fastcgi_pass`指令应根据你的PHP-FPM的运行方式(如socket或端口)进行调整。如果你使用的是LNMP一键包,可能已经有预设的PATHINFO支持,只需修改`enable-php.conf`为`enable-php-pathinfo.conf`。 在完成所有配置更改后,别忘了重启Nginx和PHP-FPM服务以使新配置生效。对于LNMP一键包用户,这通常可以通过简单的命令完成,比如`service lnmp restart`。 配置Nginx以支持ThinkPHP5的PATHINFO模式,需要正确设置`root`指令、`try_files`以及FastCGI参数,特别是`SCRIPT_FILENAME`、`SCRIPT_NAME`和`PATH_INFO`。正确配置后,你可以享受到PATHINFO模式带来的URL美化和更好的安全保护。
- 粉丝: 153
- 资源: 916
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助