Laravel 5.5官方推荐的Nginx配置学习教程


Posted in PHP onOctober 06, 2017

前言

本文主要给大家介绍了关于Laravel 5.5官方推荐的Nginx配置的想内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍把。

Laravel 5.5 版本官方放出了 Nginx 服务器的配置,中文文档:服务器配置 Nginx

server {
 listen 80;
 server_name example.com;
 root /example.com/public;

 add_header X-Frame-Options "SAMEORIGIN"; 
 add_header X-XSS-Protection "1; mode=block"; 
 add_header X-Content-Type-Options "nosniff"; 

 index index.html index.htm index.php;

 charset utf-8;

 location / {
 try_files $uri $uri/ /index.php?$query_string;
 }

 location = /favicon.ico { access_log off; log_not_found off; } 
 location = /robots.txt { access_log off; log_not_found off; } 

 error_page 404 /index.php;

 location ~ \.php$ {
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
 fastcgi_index index.php;
 include fastcgi_params;
 }

 location ~ /\.(?!well-known).* {
 deny all;
 }
}

自己并不擅长 Nginx,相信很多朋友跟我一样,让我们一起学习下 Nginx 的相关知识 : )

1. add_header X-Frame-Options "SAMEORIGIN";

X-Frame-Options 响应头是用来给浏览器指示允许一个页面可否在 <frame>, <iframe> 或者 <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。

X-Frame-Options 有三个值:

DENY

表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN

表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri

表示该页面可以在指定来源的 frame 中展示。
该响应头设置应该比较常见,之前国外客户的安全团队有使用工具扫描我们项目的相关漏洞,其中就有这个 clickjacking 的问题,最终也是通过该设置来解决此问题。

2. add_header X-XSS-Protection "1; mode=block";

XSS 是跨站脚本攻击,是比较常见的网络攻击手段,改字段指示浏览器是否为当前页面开启浏览器内建的 XSS 过滤机制。 1 表示允许过滤器,mode=block 指示浏览器在检测到 XSS 攻击后禁止加载整个页面。

参考文章: 先知XSS挑战赛 知识点提要

3. add_header X-Content-Type-Options "nosniff";

该响应头设置禁用浏览器对 Content-Type 类型进行猜测的行为。因为很多情况下服务器并没有很好的配置 Content-Type 类型,因此浏览器会根据文档的数据特征来确定类型,比如攻击者可以让原本解析为图片的请求被解析为 JavaScript。

我们发现以上三个比较常见的防攻击配置,还是非常实用的,建议使用,之前我们的服务器只使用了 add_header X-Frame-Options "SAMEORIGIN"; 配置。

4. 不记录 favicon.ico 和 robots.txt 日志

location = /favicon.ico { access_log off; log_not_found off; }
 location = /robots.txt { access_log off; log_not_found off; }

favicon.ico 网站头像,默认是浏览器标签页上网站小图标以及收藏时显示的小图标。

如果未在html header中指定 favicon.ico 那么浏览器默认会去访问 http://xxx.com/favicon.ico , 不存在此文件的话,那么会导致404,同时会记录到 access_log 和 error_log 中。这种记录到日志文件中是没有必要性的,因此可以取消。

robots.txt 通常是搜索引擎蜘蛛(爬虫)会去爬取的文件,在行业规范中,蜘蛛去爬取一个网站的时候会首先爬取该文件来获知网站中哪些目录文件不需要爬取,在 SEO 中 robots.txt 的正确配置是对 SEO 非常有效果的。该文件也确实没有必要记录到日志中,而且大部分网站并不存在 robots.txt 文件。

以上这些配置是可以用在大部分的网站上的,不止是 Nginx 服务器,相信 Apache 服务器也有相关的配置,如果你正在用其他web服务器,以上类似的配置也建议使用。

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php5.2时间相差8小时
Jan 15 PHP
php 验证码实例代码
Jun 01 PHP
php入门学习知识点六 PHP文件的读写操作代码
Jul 14 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 PHP
php判断文件上传图片格式的实例详解
Sep 30 #PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 #PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 #PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 #PHP
php使用curl下载指定大小的文件实例代码
Sep 30 #PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
Sep 29 #PHP
PHP 获取 ping 时间的实现方法
Sep 29 #PHP
You might like
Zend Guard一些常见问题解答
2008/09/11 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
Dojo 学习要点
2010/09/03 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
js确认框confirm()用法实例详解
2016/01/07 Javascript
详解Bootstrap插件
2016/04/25 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
使用requests库制作Python爬虫
2018/03/25 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
施华洛世奇澳大利亚官网:SWAROVSKI澳大利亚
2017/01/06 全球购物
大学生求职简历的自我评价范文
2013/10/12 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
供货协议书
2014/04/22 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
政风行风整改报告
2014/11/06 职场文书
解决Redis启动警告问题
2022/02/24 Redis