Nginx负载均衡安全配置说明2(nginx负载均衡部署)
nanshan 2025-06-08 23:07 15 浏览 0 评论
上一节,我们对Nginx安全配置的几个知识点做了一个说明,例如限制IP访问、文件目录禁止访问限制、需要防止DOS攻击、请求方法的限制和限制文件上传的大小这个进行了一个分析说明,详细的文章请关注我的头条号:一点热,在里面看回之前的文章,
快速入口
其实,配置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另外的安全规则说一下,请大家继续关注我的头条号:一点热,如果有问题欢迎留言咨询,欢迎转发与收藏,如果转载到其他地方,请与我联系。
相关推荐
- 使用nginx配置域名及禁止直接通过IP访问网站
-
前段时间刚搭建好这个网站,一直没有关注一个问题,那就是IP地址也可以访问我的网站,今天就专门研究了一下nginx配置问题,争取把这个问题研究透彻。1.nginx配置域名及禁止直接通过IP访问先来看n...
- 如何在 Linux 中使用 PID 号查找进程名称?
-
在Linux的复杂世界中,进程是系统运行的核心,每个进程都由一个唯一的「进程ID」(PID)标识。无论是系统管理员在排查失控进程,还是开发者在调试应用程序,知道如何将PID映射到对应的进程名称都是一项...
- Linux服务器硬件信息查询与日常运维命令总结
-
1.服务器硬件信息查询1.1CPU信息查询命令功能描述示例lscpu显示CPU架构、核心数、线程数等lscpucat/proc/cpuinfo详细CPU信息(型号、缓存、频率)cat/proc/c...
- Ubuntu 操作系统常用命令详解(ubuntu常用的50个命令)
-
UbuntuLinux是一款流行的开源操作系统,广泛应用于服务器、开发、学习等场景。命令行是Ubuntu的灵魂,也是高效、稳定管理系统的利器。本文按照各大常用领域,详细总结Ubuntu必学...
- 从 0 到 1:打造基于 Linux 的私有 API 网关平台
-
在当今微服务架构盛行的时代,API网关作为服务入口和安全屏障,其重要性日益凸显。你是否想过,不依赖商业方案,完全基于开源组件,在Linux上构建一个属于自己的私有API网关平台?今天就带你...
- Nginx搭建简单直播服务器(nginx 直播服务器搭建)
-
前言使用Nginx+Nginx-rtmp-module在Ubuntu中搭建简单的rtmp推流直播服务器。服务器环境Ubuntu16.04相关概念RTMP:RTMP协议是RealTi...
- Linux连不上网?远程卡?这篇网络管理指南你不能错过!
-
大家好!今天咱们聊个所有Linux用户都躲不开的“老大难”——网络管理。我猜你肯定遇到过这些崩溃时刻:新装的Linux系统连不上Wi-Fi,急得直拍桌子;远程服务器SSH连不上,提示“Connecti...
- 7天从0到上线!手把手教你用Python Flask打造爆款Web服务
-
一、为什么全网开发者都在疯学Flask?在当今Web开发的战场,Flask就像一把“瑞士军刀”——轻量级架构让新手3天速成,灵活扩展能力又能支撑百万级用户项目!对比Django的“重型装甲”,Flas...
- nginx配置文件详解(nginx反向代理配置详解)
-
Nginx是一个强大的免费开源的HTTP服务器和反向代理服务器。在Web开发项目中,nginx常用作为静态文件服务器处理静态文件,并负责将动态请求转发至应用服务器(如Django,Flask,et...
- 30 分钟搞定 Docker 安装与 Nginx 部署,轻松搭建高效 Web 服务
-
在云计算时代,利用容器技术快速部署应用已成为开发者必备技能。本文将手把手教你在阿里云轻量应用服务器上,通过Docker高效部署Nginx并发布静态网站,全程可视化操作,新手也能轻松上手!一、准...
- Nginx 配置实战:从摸鱼到部署,手把手教你搞定生产级配置
-
各位摸鱼搭子们!今天咱不聊代码里的NullPointerException,改聊点「摸鱼必备生存技能」——Nginx配置!先灵魂拷问一下:写了一堆接口却不会部署?服务器被恶意请求打崩过?静态资源加载...
- 如何使用 Daphne + Nginx + supervisor部署 Django
-
前言:从Django3.0开始支持ASGI应用程序运行,使Django完全具有异步功能。Django目前已经更新到5.0,对异步支持也越来越好。但是,异步功能将仅对在ASGI下运行的应用程序可用...
- Docker命令最全详解(39个最常用命令)
-
Docker是云原生的核心,也是大厂的必备技能,下面我就全面来详解Docker核心命令@mikechen本文作者:陈睿|mikechen文章来源:mikechen.cc一、Docker基本命令doc...
- ubuntu中如何查看是否已经安装了nginx
-
在Ubuntu系统中,可以通过以下几种方法检查是否已安装Nginx:方法1:使用dpkg命令(适用于Debian/Ubuntu)bashdpkg-l|grepnginx输出...
- OVN 概念与实践(德育概念的泛化在理论和实践中有什么弊端?)
-
今天我们来讲解OVN的概念和基础实践,要理解本篇博客的内容,需要前置学习:Linux网络设备-Bridge&VethPairLinux网络设备-Bridge详解OVS+Fa...
你 发表评论:
欢迎- 一周热门
-
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
手机如何设置与显示准确时间的详细指南
-
NAS:DS video/DS file/DS photo等群晖移动端APP远程访问的教程
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
一加手机与电脑互传文件的便捷方法FileDash
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
- 最近发表
-
- 使用nginx配置域名及禁止直接通过IP访问网站
- 如何在 Linux 中使用 PID 号查找进程名称?
- Linux服务器硬件信息查询与日常运维命令总结
- Ubuntu 操作系统常用命令详解(ubuntu常用的50个命令)
- 从 0 到 1:打造基于 Linux 的私有 API 网关平台
- Nginx搭建简单直播服务器(nginx 直播服务器搭建)
- Linux连不上网?远程卡?这篇网络管理指南你不能错过!
- 7天从0到上线!手把手教你用Python Flask打造爆款Web服务
- nginx配置文件详解(nginx反向代理配置详解)
- 30 分钟搞定 Docker 安装与 Nginx 部署,轻松搭建高效 Web 服务
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)