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 相关文章推荐
织梦模板标记简介
Mar 11 PHP
8个出色的WordPress SEO插件收集
Feb 26 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
sql注入与转义的php函数代码
Jun 17 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
PHP系统命令函数使用分析
Jul 05 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
php获取远程文件的内容和大小
Nov 03 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 PHP
PHP无限极分类函数的实现方法详解
Apr 15 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
isset和empty的区别
2007/01/15 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
简单谈谈json跨域
2016/03/13 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
2016/03/22 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
对python产生随机的二维数组实例详解
2018/12/13 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
python中property和setter装饰器用法
2019/12/19 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
网络技术支持面试题
2013/04/22 面试题
安全员岗位职责
2013/11/11 职场文书
工程专业求职自荐书范文
2014/02/18 职场文书
任命书范本大全
2014/06/06 职场文书
公司应聘自荐书
2014/06/14 职场文书
2014年老干部工作总结
2014/11/21 职场文书
i7 6700处理器相当于i5几代
2022/04/19 数码科技