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

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

off999 2025-02-04 15:39 17 浏览 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另外的安全规则说一下,请大家继续关注我的头条号:一点热,如果有问题欢迎留言咨询,欢迎转发与收藏,如果转载到其他地方,请与我联系。

相关推荐

全网第一个讲清楚CPK如何计算的Step by stepExcel和Python同时实现

在网上搜索CPK的计算方法,几乎全是照搬教材的公式,在实际工作做作用不大,甚至误导人。比如这个又比如这个:CPK=min((X-LSL/3s),(USL-X/3s))还有这个,很规范的公式,也很清晰很...

[R语言] R语言快速入门教程(r语言基础操作)

本文主要是为了从零开始学习和理解R语言,简要介绍了该语言的最重要部分,以快速入门。主要参考文章:R-TutorialR语言程序的编写需要安装R或RStudio,通常是在RStudio中键入代码。但是R...

Python第123题:计算直角三角形底边斜边【PythonTip题库300题】

1、编程试题:编写一个程序,找出已知面积和高的直角三角形的另外两边(底边及斜边)。定义函数find_missing_sides(),有两个参数:area(面积)和height(高)。在函数内,计算另外...

Tensor:Pytorch神经网络界的Numpy

TensorTensor,它可以是0维、一维以及多维的数组,你可以将它看作为神经网络界的Numpy,它与Numpy相似,二者可以共享内存,且之间的转换非常方便。但它们也不相同,最大的区别就是Numpy...

python多进程编程(python多进程进程池)

forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...

原来Python的协程有2种实现方式(python协程模型)

什么是协程在Python中,协程(Coroutine)是一种轻量级的并发编程方式,可以通过协作式多任务来实现高效的并发执行。协程是一种特殊的生成器函数,通过使用yield关键字来挂起函数的执行...

ob混淆加密解密,新版大众点评加密解密

1目标:新版大众点评接口参数_token加密解密数据获取:所有教育培训机构联系方式获取难点:objs混淆2打开大众点评网站,点击教育全部,打开页面,切换到mobile模式,才能找到接口。打开开发者工具...

python并发编程-同步锁(python并发和并行)

需要注意的点:1.线程抢的是GIL锁,GIL锁相当于执行权限,拿到执行权限后才能拿到互斥锁Lock,其他线程也可以抢到GIL,但如果发现Lock仍然没有被释放则阻塞,即便是拿到执行权限GIL也要立刻...

10分钟学会Python基础知识(python基础讲解)

看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了。最好还是把代码敲一下。一、函数基础简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行。...

Python最常见的170道面试题全解析答案(二)

60.请写一个Python逻辑,计算一个文件中的大写字母数量答:withopen(‘A.txt’)asfs:count=0foriinfs.read():ifi.isupper...

Python 如何通过 threading 模块实现多线程。

先熟悉下相关概念多线程是并发编程的一种方式,多线程在CPU密集型任务中无法充分利用多核性能,但在I/O操作(如文件读写、网络请求)等待期间,线程会释放GIL,此时其他线程可以运行。GIL是P...

Python的设计模式单例模式(python 单例)

单例模式,简单的说就是确保只有一个实例,我们知道,通常情况下类其实可以有很多实例,我们这么来保证唯一呢,全局访问。如配置管理、数据库连接池、日志处理器等。classSingleton: ...

更安全的加密工具:bcrypt(bcrypt加密在线)

作为程序员在开发工作中经常会使用加密算法,比如,密码、敏感数据等。初学者经常使用md5等方式对数据进行加密,但是作为严谨开发的程序员,需要掌握一些相对安全的加密方式,今天给大家介绍下我我在工作中使用到...

一篇文章搞懂Python协程(python协程用法)

前引之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线...

Python开发必会的5个线程安全技巧

点赞、收藏、加关注,下次找我不迷路一、啥是线程安全?假设你开了一家包子铺,店里有个公共的蒸笼,里面放着刚蒸好的包子。现在有三个顾客同时来拿包子,要是每个人都随便伸手去拿,会不会出现混乱?比如第一个顾...

取消回复欢迎 发表评论: