当前位置:首页 > 技术文章 > 正文内容

Nginx负载均衡安全配置说明2 nginx负载均衡配置文件

arlanguage5个月前 (12-15)技术文章40

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

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/203.html

标签: nginx访问慢
分享给朋友:

“Nginx负载均衡安全配置说明2 nginx负载均衡配置文件” 的相关文章

php培训都学什么?有哪些课程?

PHP入门虽然比较容易简单,但是对于零基础学员来讲,想要学到精髓,并不是一件容易的事情,越到后面学起来越累,因此,最快最便捷的方法就是参加培训,不仅可以快速掌握入门,还能够学到精髓之处,那么PHP培训都有哪些课程?下面我们以六星教育的php培训课程为例来为大家讲解:第一阶段:动态网站开发的三个方面1...

nginx 解决 readv() failed (104: Connection reset by peer)

查看nginx error错误,发现上传接口报以下错:2019/10/10 19:58:25 [error] 299784#0: *5967188 readv() failed (104: Connection reset by peer) while reading upstream, clien...

Nginx系列:图片过滤处理

http_image_filter_module是Nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高;磁盘有限不想生成多余的图片文件的前提下,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是实时计算的结果,所以网站...

容器中Nginx高并发参数调优实战 nginx并发量过高怎么处理

在容器化的微服务架构中,Nginx作为反向代理和负载均衡器,常常需要承担高并发访问的压力。当并发连接数超过Nginx可处理的上限时,就会出现新连接被丢弃的情况。本文将详细介绍如何发现和定位这个问题,并通过调整内核参数和Nginx配置来解决。一、问题现象某Web服务在高并发场景下,偶尔会出现部分请求无...

性能优化大揭秘:从代码到架构,全方位提升系统性能的实战技巧

在现代软件开发中,系统性能优化是一个永恒的话题。无论是移动应用、Web应用还是分布式系统,性能始终是用户体验、系统稳定性以及业务可扩展性的关键因素。性能瓶颈的存在不仅可能导致用户流失,还可能增加系统维护成本,甚至影响到业务的正常运行。因此,从代码层面到架构层面,全面的性能优化是每个技术人员必须掌握的...

nginx入门——nginx访问日志(六)

日志功能在ngx_http_log_module模块中定义,实现了以指定格式写入请求日志。我们先来看一个nginx配置文件:http { include mime.types; default_type application/octet-stream;...