本文主要给大家介绍了关于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版本和安装目录来设定。
好,做完这些之后,保存,重启nginx和php就能生效了。如果你是lnmp一键包用户的话不用上面这样设置,往下面看:
lnmp一键包pathinfo的设置
其实lnmp一键包里面的pathinfo军哥已经都写好了,我们只需要把include enable-php.conf;修改成include enable-php-pathinfo.conf;然后重启lnmp就搞定了。
#include enable-php.conf;或者,你直接注释掉这一行,在下面添加新的一行 include enable-php-pathinfo.conf;
就是这样简单。下面顺便附上在url里隐藏模块的方法
url隐藏默认模块index
很简单,在入口文件里面定义常量BIND_MODULE为你使用的模块就好了,以默认的index为例:
define('BIND_MODULE', 'index');
这样,在url里面不会在有模块名这一级目录了。要知道,层级少一些的url对SEO是有好处的。
下面是nginx里面location的匹配规则
Nginx location的匹配规则
location 匹配优先级
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持
本文向大家介绍nginx下配置thinkphp文件的方法,包括了nginx下配置thinkphp文件的方法的使用技巧和注意事项,需要的朋友参考一下 在上篇文章给大家介绍了在Nginx上部署ThinkPHP项目教程,今天给大家介绍nginx下thinkphp的配置,具体详解如下: 以上所述是小编给大家介绍的nginx下配置thinkphp文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,
本文向大家介绍Nginx下配置codeigniter框架方法,包括了Nginx下配置codeigniter框架方法的使用技巧和注意事项,需要的朋友参考一下 原来在winserver+Apache环境下工作良好的一个微信公众号后台迁移到阿里云(环境:Ubuntu 64位 | PHP5.4 | Nginx1.6)下却频出 404,403,只能访问CI routes.php中设置的默认控制器等问题,后来
本文向大家介绍Linux下安装配置nginx详解,包括了Linux下安装配置nginx详解的使用技巧和注意事项,需要的朋友参考一下 一、Linux下安装配置nginx 第一次安装nginx,中间出现的问题一步步解决。 用到的工具secureCRT,连接并登录服务器。 1.1 rz命令,会弹出会话框,选择要上传的nginx压缩包。 1.2 解压 1.3 进入nginx文件夹,执行./configur
本文向大家介绍linux下配置yum源方法详解,包括了linux下配置yum源方法详解的使用技巧和注意事项,需要的朋友参考一下 本人使用的方法一,成功配置,方法二没测过,可以作为参考 方法一: 1.确保RHEL5中已经安装了yum 2.修改源配置文件 #vim /etc/yum.repos.d/CentOS-Base.repo (如果目录下没有.repo文件自己创建一个) 3. 导入key 4.
本文向大家介绍VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解,包括了VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法。分享给大家供大家参考,具
本文向大家介绍Symfony2在Nginx下的配置方法图文教程,包括了Symfony2在Nginx下的配置方法图文教程的使用技巧和注意事项,需要的朋友参考一下 本文详细讲述了Symfony2在Nginx下的配置方法。分享给大家供大家参考,具体如下: 网上有很多关于symfony2在nginx下的配置文章,如果是小白,按照网上贴出来的配置文件配置,却怎么也不成功,我经过多次摸索,写下心得: 1. 首