Nginx是当今最流行的Web服务器之一。它为世界上7%的web流量提供服务而且正在以惊人的速度增长。它是个让人惊奇的服务器,我愿意部署它。
下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你的Nginx部署是安全的。

1. 在配置文件中小心使用"if"
它是重写模块的一部分,不应该在任何地方使用。
“if”声明是重写模块评估指令强制性的部分。换个说法,Nginx的配置一般来说是声明式的。在有些情况下,由于用户的需求,他们试图在一些非重写指令内使用“if”,这导致我们现在遇到的情况。大多数情况下都能正常工作,但…看上面提到的。

看起来唯一正确的解决方案是在非重写的指令内完全禁用“if”。这将更改现有的许多配置,所以还没有完成。IfIsEvil:http://wiki.nginx.org/IfIsEvil

2. 将每个~ .php$请求转递给PHP
我们上周发布了这个流行指令的潜在安全漏洞介绍。即使文件名为hello.php.jpeg它也会匹配~ .php$这个正则而执行文件。
现在有两个解决上述问题的好方法。我觉得确保你不轻易执行任意代码的混合方法很有必要。
2.1 如果没找到文件时使用try_files和only(在所有的动态执行情况下都应该注意) 将它转递给运行PHP的FCGI进程。
2.2 确认php.ini文件中cgi.fix_pathinfo设置为0 (cgi.fix_pathinfo=0) 。这样确保PHP检查文件全名(当它在文件结尾没有发现.php它将忽略)
2.3 修复正则表达式匹配不正确文件的问题。现在正则表达式认为任何文件都包含".php"。在站点后加“if”确保只有正确的文件才能运行。将/location ~ .php$和location ~ ..*/.*.php$都设置为return 403;

3. 禁用autoindex模块
这个可能在你使用的Nginx版本中已经更改了,如果没有的话只需在配置文件的location块中增加autoindex off;声明即可。

4. 禁用服务器上的ssi (服务器端引用)
这个可以通过在location块中添加ssi off; 。

5. 关闭服务器标记
如果开启的话(默认情况下)所有的错误页面都会显示服务器的版本和信息。将server_tokens off;声明添加到Nginx配置文件来解决这个问题。

6. 在配置文件中设置自定义缓存以限制缓冲区溢出攻击的可能性

client_body_buffer_size 1K; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k;
1
2
3
4

client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;

7. 将timeout设低来防止DOS攻击
所有这些声明都可以放到主配置文件中。

client_body_timeout 10; client_header_timeout 10; keepalive_timeout 5 5; send_timeout 10;
1
2
3
4

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;

8. 限制用户连接数来预防DOS攻击

limit_zone slimits $binary_remote_addr 5m; limit_conn slimits 5;
1
2

limit_zone slimits $binary_remote_addr 5m;
limit_conn slimits 5;

9. 试着避免使用HTTP认证
HTTP认证默认使用crypt,它的哈希并不安全。如果你要用的话就用MD5(这也不是个好选择但负载方面比crypt好) 。

10. 保持与最新的Nginx安全更新
转自:http://www.levigross.com/post/4488812448/10-tips-for-securing-nginx

个人觉得在防止DDOS攻击这方面,上面提到的第七第八没太大用处,特别是第八点,很扰乱用户体验度的。

转载于:https://www.cnblogs.com/djwhome/p/9565711.html

确保nginx安全的10个技巧相关推荐

  1. 让你的 Node.js 应用跑得更快的 10 个技巧

    Node.js 受益于它的事件驱动和异步的特征,已经很快了.但是,在现代网络中只是快是不行的.如果你打算用 Node.js 开发你的下一个Web 应用的话,那么你就应该无所不用其极,让你的应用更快,异 ...

  2. 实现大数据可视化的10个技巧

    大数据技术的有效可视化不应该只是为管理层绘制的漂亮图片.专家表示,企业可通过考虑布局.迭代设计.吸引用户和了解业务需求来改善结果. 数据目录提供商Alation公司设计和战略计划副总裁Aaron Ka ...

  3. 引用:编写高性能Web应用程序的10个技巧(一)

    在网上看到这样一篇文章:编写高性能Web应用程序的10个技巧 感觉很不错就引用到我的blog里面,和大家一起学习,同时也谢谢作者本人 数据层性能 技巧 1 - 返回多个结果集 技巧 2 - 分页的数据 ...

  4. 程序人生:硬件工程师应记住的10个技巧

    嵌入式系统设计不仅需要了解硬件,还需了解软件是如何影响硬件并与硬件进行交互的.设计硬件所需的范式可能与设计软件完全相反.当从硬件设计转向包含软件的设计时,硬件工程师应牢记以下十个技巧. 技巧#1:流程 ...

  5. php serialize和json_encode哪个更快_学习PHP的10个技巧

    在开始学习PHP之前,花一些时间计划学习语言的方法可能是明智的. 学习过PHP的专业开发人员已经花费了大量时间来学习他们的技术.要模拟它们,您将需要确保有动力去做,并且理想地能够快速有效地学习PHP. ...

  6. [其他] 10种技巧可提升Android应用运行效果

    随着手机平台的发展和所提供应用的提升,质量成为应用成功的最重要因素.如果那些应用无法提供强大的功能和稳定的用户体验,那就会很快被用户卸载.开发者需要记住的是,虽然Android智能手机和平板电脑的速度 ...

  7. 引用: 编写高性能 Web 应用程序的10个技巧

    ASP.NET 专栏... 编写高性能 Web 应用程序的10个技巧 原著:Rob Howard 翻译:alpha2002 原文出处:ASP.NET: 10 Tips for Writing High ...

  8. vray 用于室内渲染的10大技巧,看进来!

    室内设计是建筑可视化艺术家最鼓舞人心的行业之一.我们不断发现令人难以置信的设计方案和超逼真的 CG 图像,即使是最敏锐的眼睛也会受到欺骗. vray 用于室内渲染的10大技巧之:寻找参考资料 总是在一 ...

  9. 16位调色板和32位调色板_整理色板和调色板的10个技巧

    知道自己有东西,但不知道它在哪里会令人沮丧. 对于您为设计项目创建或保存的颜色,尤其如此. 不得不遍历色样 , 浪费时间 ,只好在需要切换色相时重新开始搜索. 如果您经常使用吸管工具或将CMYK值插入 ...

最新文章

  1. 个人常用word技巧----平时编辑word能快不少~
  2. 如何实现对象的深copy?
  3. mysql调优_MYSQL企业常用架构与调优经验分享
  4. day2 字典常用的方法
  5. 用java写出死锁的例子_【面试】请写一个java死锁的例子-Go语言中文社区
  6. xml文件是什么?xml文档定义有几种形式?它们之间有何本质区别?解释xml文档又几种方式
  7. DIN数据电缆行业现状调研及趋势分析报告
  8. android抽屉效果
  9. MASM调试汇编代码(命令行方式)
  10. 【重磅】云栖社区2017年度内容特辑
  11. matlab怎么做跳动的桃心曲线,用matlab画跳动的爱心
  12. 平台软件每日构建总结
  13. android通讯录完整功能实现,Android实现通讯录功能
  14. 辛普森悖论和朴素贝叶斯
  15. F5 LTM 常用oid列表
  16. decode函数的作用
  17. 计算机休眠后无声音,待机恢复后没有声音处理方法
  18. Biological Psychiatry:为精准精神病学定义个体化功能神经解剖
  19. python接水果游戏代码_Python开发接水果小游戏编程
  20. 基于模糊PID的混合磁悬浮减振器的设计及控制研究

热门文章

  1. vue组件的基本使用,以及组件之间的基本传值方式
  2. 实现磁贴的效果的一种方法
  3. OpenCV2.3的cvCalcHist函数有问题?255级值总为0,索性自己写一个直方图计算函数,附源码
  4. java 优雅退出_java – 优雅地退出应用程序?
  5. Linux Bash 笔记
  6. 华为首款搭载鸿蒙os 荣耀智慧屏,全球首款搭载鸿蒙OS终端! 荣耀智慧屏将在今天拉开面纱...
  7. KVM中Virtio网络的演化之路
  8. leetcode算法题--K站中转内最便宜的航班★
  9. python 获取方法名_python 动态获取当前运行的类名和函数名的方法
  10. jmeter怎么在服务器上运行,如何通过jenkins在远程服务器上运行jmeter测试