首页 > 开发 > Nginx > 正文

Nginx下ThinkPHP5的配置方法详解

2020-02-18 01:16:02
字体:
来源:转载
供稿:网友

本文主要给大家介绍了关于Nginx下ThinkPHP5的配置方法,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍:

url里public目录的隐藏

出于安全的考虑,TP5的入口文件改成放在public下了,因为这样的话能防止被恶意用户访问到“/thinkphp/”、“/vendor/”等等这些目录下的文件。所以当你以之前的习惯将网站documentroot配置为项目根目录的时候就会需要在url后面加上/public/来访问。当然可能也会有童鞋把入口文件放回到根目录下,然后还是以之前3.x版那样的形式访问了。

但是很显然,这么做并不是那么的科学。

假设项目目录为“/web/wwwroot/augsky.com”,那么我们在网站的nginx配置文件里面将root配置为:

root /web/wwwroot/augsky.com/public;

但是一定要记得将open_basedir设置为上一级项目的根目录下,不然应用会没有权限调用除public目录下的其他文件,网站会报500无法访问。(open_basedir的配置默认在php.ini里面,但如果是多个虚拟机环境的话有可能会在各个网站的user.ini文件里,这个要根据自己的实际情况来。)具体配置如下:

open_basedir=/web/wwwroot/augsky.com:/tmp/:/proc/

隐藏入口文件index.php:

location /  {    try_files $uri $uri/ /index.php?s=$uri&$args;    #如果请求不是文件或目录,则将uri交给index.php处理,同时保留参数  }

说一下try_files:

try_files语法: try_files file1 [file2 ... filen] uri     OR  try_files file1 [file2 ... filen] =code默认值: 无作用域: server location

try_files支持多个参数,每个参数代表一个文件,系统将按顺序检查这些文件是否存在,存在就直接执行,斜线“/”结尾代表目录,若都不存在,则会重定向到最后一个参数指向的文件或者返回指定的http状态码。

pathinfo配置

在配置文件里面增加这一段(如果你是lnmp一键包用户,请略过这一段往下翻):

location ~ [^/]/.php(/|$) {  set $path_info "";  #定义变量 $real_script_name,用于存放真实地址  set $real_script_name $fastcgi_script_name;  #如果地址与引号内的正则表达式匹配  if ($fastcgi_script_name ~ "^(.+?/.php)(/.+)$") {  #将文件地址赋值给变量 $real_script_name  set $real_script_name $1;  #将文件地址后的参数赋值给变量 $path_info  set $path_info $2;  }  #配置fastcgi的一些参数  fastcgi_pass unix:/tmp/php-cgi.sock;  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版本和安装目录来设定。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表