Nginx下ThinkPHP5的配置方法详解

本文主要给大家介绍了关于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,使用在内部定向时,例如 error_page, try_files

location 匹配优先级

= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。

普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。

^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。

最后匹配理带有"~"和"~*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对码农之家的支持

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

nginx php 书籍,详细介绍Nginx下ThinkPHP5的配置方法相关推荐

  1. Nginx下ThinkPHP5的配置方法

    http://www.php.cn/php-weizijiaocheng-394360.html 本文主要给大家介绍了关于Nginx下ThinkPHP5的配置方法,分享出来供大家参考学习,下面话不多说 ...

  2. 直接访问静态图片_详解nginx和tomcat访问图片和静态页面的配置方法

    概述 生产环境下,有时候需要访问图片,正常需要应用ftp.nginx等配套使用,但是有时候为了简化,可以用以下的两种简单的访问,说实话,就是为了偷懒,但是效果是能有的,这就行了,所以今天做这个简化版的 ...

  3. apache php mysql配置详解,详细介绍:Apache+PHP+MySQL配置攻略_php基础

    一.系统要求: 本系统在REDHAT7.2版本测试通过 二.服务器端软件要求: 1:到APACHE的网络站下载APACHE WEB SERVER http://www.apache.org/ 2. 到 ...

  4. Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 556  文章- 38  评论- 77 ...

  5. python3.6+pytorch-cpu+Pycharm环境下的PyTorch配置方法

    在踩了很多坑,好不容易安装成功后,想着整理总结一下,给后来人一个参考. 安装Anaconda 清华大学开源软件镜像站清华Anaconda安装包下载地址 链接进去选择自己需要的版本就可以下载了哈.这里我 ...

  6. 深信服防火墙配置详细步骤(防火墙的基本配置方法)

    转载至:深信服防火墙配置详细步骤(防火墙的基本配置方法) - 宝瑞资源网 1.防火墙的产品USG 5000 6000 9000 别离是低端.中端.高端产品. 2.四个区域:(local100.trus ...

  7. win10+python3.6+tensorflow-cpu+keras+Pycharm环境下的tensorflow配置方法

    在pytorch成功配置的基础上,也尝试着把tensorflow和keras安装了一下. Win 10 Anaconda3-5.2.0-Windows-x86_64.exe python3.6 ten ...

  8. 全网详细介绍nginx的反向代理、正向代理配置,location的指令说明,反向代理的两个示例代码以及全局块,events块和http快的说明。

    文章目录 1. 文章引言 2. 何谓反向代理 3. 解析nginx的配置文件 3.1 全局块(global block) 3.2 events块(events block) 3.3 http块(htt ...

  9. Nginx超详细介绍 nginx入门 nginx配置 nginx详解 nginx优化

    # 此文加上部署课程一起 nginx文档 nginx配置基本全了 nginx七种状态(tcp是11种状态) #nginx七种状态 Active connections: 2 server accept ...

最新文章

  1. 从飞天到倚天 阿里云底层自研技术大爆发
  2. java字符串分解 StringTokenizer用法
  3. python 数据验证
  4. 仿写thinkphp的I方法
  5. python利用numpy创建数组(等比,等差,空数组,1数组)
  6. 计算机科技手抄报内容,科技手抄报内容云计算文字稿
  7. matlab 回退到上一行,对乒乓球回滚的分析与MATLAB模拟
  8. 72年属鼠48岁有一灾2020_李半仙推算:1972年虚岁48岁属鼠人,2020年干什么最能发财??...
  9. P4 前端编译器p4c-bm、后端编译器bmv2命令安装 make error问题
  10. nosql的数据服务_使用NoSQL实现实体服务–第3部分:CouchDB
  11. fcntl函数(网络编程会用)
  12. USACO-Section2.1 Healthy Holsteins (深度优先搜索)
  13. Android视频截图【转】
  14. 计算机网络管理4级有什么用,计算机网络管理二级4浅析.doc
  15. 【生信进阶练习1000days】day2-学习summarized experimental data与Down stream analysis
  16. 16、单片机串口原理与应用
  17. 信息学竞赛与 计算机科学,在信息学奥林匹克竞赛中我与学生共成长
  18. 计算机中1kb等于多少字节,1kb等于多少个字节
  19. BUG的跟踪管理、定位BUG
  20. 学Python更多是为了摸鱼,大多数人都这么做

热门文章

  1. 安慰奶牛 最小生成树
  2. MainFrame小结(20110812)--MOVE ALL与INITIALIZE(cobol)
  3. Qt signal slot 实现机制
  4. 【2】二级C语言中那些易错的概念题
  5. 董老师又双叒叕送书啦,8本《Python网络程序设计(微课版)》
  6. BeautifulSoup解析库select方法实例——获取企业信息
  7. Python标准库shutil中rmtree()使用回调函数
  8. java xml 合并_Java中合并XML文档的合并
  9. postman如何改成中文版_在 Windows 上如何用 Postman 重现 Dubbo 反序列化漏洞
  10. linux 多线程 多进程 利用率,多进程与多线程的深度比较