百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Nginx负载均衡安全配置说明2(nginx负载均衡如何配置)

off999 2025-02-04 15:39 18 浏览 0 评论

上一节,我们对Nginx安全配置的几个知识点做了一个说明,例如限制IP访问、文件目录禁止访问限制、需要防止DOS攻击、请求方法的限制和限制文件上传的大小这个进行了一个分析说明,详细的文章请关注我的头条号:一点热,在里面看回之前的文章,

快速入口

Nginx负载均衡的一些安全配置说明

其实,配置Nginx的安全就是对我们的Nginx已有的配置打开与关闭,这个在电子设计上的端口有点像类似,比如我们平时见到的LED灯,如果LED灯是有P1端口控制的话,我们可以在主控芯片要的P1端口输出高电平,那么我们可以输入P1=0xFF,这样灯就会亮,事实上,我们Nginx的配置,也是有那样简单的配置,只要我们对整个Nignx的工作原理要理解。

那么,我继续上一节说的问题,继续把NGINX的安全规则分析一下。

6、防止文件盗链的限制。

一般来说,我们在负载均衡的项目中,我们会使用我们的静态文件放到nginx中,特别是我们的图片,那么这个时候,有经验的人会知道,很多人会把人家网上的图片直接复制到他们的博客或者网上上使用,而这样对我们的网站有什么影响?答案很明显,就是你的网站需要增加大量的访问连接量,增加带宽成本,不过现在很多人也会把自己静态文件放到云服务器,然后加上CDN来回调,而不放在自己的NGINX服务器上,不过虽然是放在云服务器上,但是他们同样也需要做防盗链处理的,例如,阿里云OSS,它可以对你的图片资源限制防盗链。

对于防盗链,我们可以有两种方法,一张是对全局图片设置防盗链,另外一种就是,都某一个目录进行防盗链。

  • 对全局图片防盗链

一般的做法,就是首先检测到文件的后缀,比如是yeehot.com/ming.jpeg,那么,我们检测是不是yeehot.com这个网站,如果有效,我们保持默认处理,如果无效那么我们重新转向到一张无效的图片403.jpg.

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

valid_referers none blocked *.yeehot.com;

if ($invalid_referer)

{

#注意这里网站地址和上面的地址是不一样的,因为上面已经锁定了yeehot.com的域名会防盗链,那其他如果需要返回这个将看不到,就是无效

rewrite ^/ http://www.yeehot.cn/403.jpg;

#return 403;

}

}

  • 对图片目录进行防盗链


首先我们会检测我们图片的目录,然后检测域名,如果是就不做处理,否则,就重定向到无效的图片,

location /images/

{

valid_referers none blocked server_names *.yeehot.com;

if ($invalid_referer)

rewrite ^/ http://www.yeehot.cn/403.jpg;{

#return 403;

}

}

当然,我们还可以使用一些其他的第三方模块开启防盗链,但是我这里主要以Nginx为例子。

7、配置SSL证书,提高安全性

关于ssl,它是一种协议,就是在网络传输数据一种通信协议。它的全称是Secure Sockets Layer ,就是安全套接层的意思,它是专门为网络通信提供安全及数据完整性的一种安全协议SSL,大家可以看回上一节说到的单双向的解释就可以知道。它和TLS一起在传输层对网络连接进行加密。它的功能主要就是:认证用户和服务器,保证我们的数据能够准确的发送到客户端和服务器,加密数据保证了在传输的过程中,不被网络监听者篡改。保证了数据传输的完整性。

对于SSL证书,我之前的一文章《springmvc项目关于安全的一些配置与实现方式》

,专门介绍到https,ssl以及签名的制作,这里,我就不做解释了。我这里就继续以Nginx的配置SSL为例

对于请求证书CSR怎么生成和私钥怎么生成,建议看会我之前的文章,主要用openssl来生成,

这里我大概给出两个指令供大家参考

1、 openssl genrsa -des3 -out server.key 1024

2、 openssl req -new -key server.key -out server.csr

3、 openssl x509 -req -days 3650 -in server.csr -out server.pem -signkey server.key

对于我们的ssl,我们一般是监听443端口,所以我们配置443端口的SSL证书

server {

server_name www.yeehot.com;

listen 443;

ssl on;

ssl_certificate /usr/mnt/yeehotserver.crt;

ssl_certificate_key /mnt/yeehotserver.key;

}

这里还需要注意的是,如果我们的Nginx没有开启ssl模块,那么我们需要编译模块nginx的时候加入–with-http_ssl_module。

8、尽量不要开启过多的模块。

有些模块,我们是不需要使用的,但是我们如果我们开启了一下模块,那么大的增加了Nginx的安全风险,所以我们需要将一些模块关闭

我们如果要看nginx安装了哪些模块,我们可以输入如下指令

nginx/sbin/nginx -V

对于我们之前直接apt-get install nginx或者yum install nginx这样安装的话,可能默认会加入了很多的模块,所以我们要通过./configure,去除一些不必要的模块。

添加模块的指令是

--with-http_ssl_module

删除模块的指令是

--without-http_uwsgi_module

9、屏蔽个别爬虫

以前,我的一个网站出现过一种情况,刚刚建好3个多月,就出现超过10000个并发,但是我们的用户还没有达到这个数量,网站访问很慢,体验很不好,于是我检查一下,发现有一个搜索引擎来不断访问我的网站,但是我也不知道这个是什么爬虫来。为了禁止它访问我们的网站,我们可以添加User Agent过滤规则,比如我们对搜搜爬虫屏蔽处理,那么可以检测user_agent是否含有Sosospider,如果有搜搜爬虫,那么返回403,代码如下:

if ($http_user_agent ~* Sosospider) {

return 403;

}

当然,我们还还会遇到一些位置user_agent的攻击,那么实际情况,这个我们需要对这些伪装的日志加以分析,结合IP地址加以分析。

10、sql注入的防护

我们的nginx的负载均衡的代理服务器,负责转发的功能,有时我们会传入一下参数,而这些参数很有可能是写入到数据库的,而一些人会使用SQL语句设计的漏洞,添加一些特别的字符到参数中,为了防止SQL注入,那么我们需要在nginx中处理掉这些特殊字符。

例如我们的一个请求

api.yeehot.com/ming?uid=2992&content=hello'这里有个字符,我们需要对它进行过滤,那么可以使用 $query_string

if ( $query_string ~* ".*[\;'\<\>].*" ){

return 404;

}

今天的课程讲到这里,我们下一节继续将这个Nginx另外的安全规则说一下,请大家继续关注我的头条号:一点热,如果有问题欢迎留言咨询,欢迎转发与收藏,如果转载到其他地方,请与我联系。

相关推荐

让 Python 代码飙升330倍:从入门到精通的四种性能优化实践

花下猫语:性能优化是每个程序员的必修课,但你是否想过,除了更换算法,还有哪些“大招”?这篇文章堪称典范,它将一个普通的函数,通过四套组合拳,硬生生把性能提升了330倍!作者不仅展示了“术”,更传授...

7 段不到 50 行的 Python 脚本,解决 7 个真实麻烦:代码、场景与可复制

“本文整理自开发者AbdurRahman在Stackademic的真实记录,所有代码均经过最小化删减,确保在50行内即可运行。每段脚本都对应一个日常场景,拿来即用,无需额外依赖。一、在朋...

Python3.14:终于摆脱了GIL的限制

前言Python中最遭人诟病的设计之一就是GIL。GIL(全局解释器锁)是CPython的一个互斥锁,确保任何时刻只有一个线程可以执行Python字节码,这样可以避免多个线程同时操作内部数据结...

Python Web开发实战:3小时从零搭建个人博客

一、为什么选Python做Web开发?Python在Web领域的优势很突出:o开发快:Django、Flask这些框架把常用功能都封装好了,不用重复写代码,能快速把想法变成能用的产品o需求多:行业...

图解Python编程:从入门到精通系列教程(附全套速查表)

引言本系列教程展开讲解Python编程语言,Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,它也是互联网最热门的编程语言之一。Python生态丰富,库(模块)极其丰富,这使...

Python 并发编程实战:从基础到实战应用

并发编程是提升Python程序效率的关键技能,尤其在处理多任务场景时作用显著。本文将系统介绍Python中主流的并发实现方式,帮助你根据场景选择最优方案。一、多线程编程(threading)核...

吴恩达亲自授课,适合初学者的Python编程课程上线

吴恩达教授开新课了,还是亲自授课!今天,人工智能著名学者、斯坦福大学教授吴恩达在社交平台X上发帖介绍了一门新课程——AIPythonforBeginners,旨在从头开始讲授Python...

Python GUI 编程:tkinter 初学者入门指南——Ttk 小部件

在本文中,将介绍Tkinter.ttk主题小部件,是常规Tkinter小部件的升级版本。Tkinter有两种小部件:经典小部件、主题小部件。Tkinter于1991年推出了经典小部件,...

Python turtle模块编程实践教程

一、模块概述与核心概念1.1turtle模块简介定义:turtle是Python标准库中的2D绘图模块,基于Logo语言的海龟绘图理念实现。核心原理:坐标系系统:原点(0,0)位于画布中心X轴:向右...

Python 中的asyncio 编程入门示例-1

Python的asyncio库是用于编写并发代码的,它使用async/await语法。它为编写异步程序提供了基础,通过非阻塞调用高效处理I/O密集型操作,适用于涉及网络连接、文件I/O...

30天学会Python,开启编程新世界

在当今这个数字化无处不在的时代,Python凭借其精炼的语法架构、卓越的性能以及多元化的应用领域,稳坐编程语言排行榜的前列。无论是投身于数据分析、人工智能的探索,还是Web开发的构建,亦或是自动化办公...

Python基础知识(IO编程)

1.文件读写读写文件是Python语言最常见的IO操作。通过数据盘读写文件的功能都是由操作系统提供的,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个...

Python零基础到精通,这8个入门技巧让你少走弯路,7天速通编程!

Python学习就像玩积木,从最基础的块开始,一步步搭建出复杂的作品。我记得刚开始学Python时也是一头雾水,走了不少弯路。现在回头看,其实掌握几个核心概念,就能快速入门这门编程语言。来聊聊怎么用最...

一文带你了解Python Socket 编程

大家好,我是皮皮。前言Socket又称为套接字,它是所有网络通信的基础。网络通信其实就是进程间的通信,Socket主要是使用IP地址,协议,端口号来标识一个进程。端口号的范围为0~65535(用户端口...

Python-面向对象编程入门

面向对象编程是一种非常流行的编程范式(programmingparadigm),所谓编程范式就是程序设计的方法论,简单的说就是程序员对程序的认知和理解以及他们编写代码的方式。类和对象面向对象编程:把...

取消回复欢迎 发表评论: