2022
我们一起努力

nginx安全策略(nginx 策略)

本文目录:

  • 1、Content-Security-Policy(CSP)漏洞,解决方案
  • 2、负载均衡:F5,Haproxy,lvs, nginx
  • 3、Nginx&Apache反向代理解决https站点无法展示http内容问题
  • 4、windows下跑nginx如何有效扩大最大连接数问题

Content-Security-Policy(CSP)漏洞,解决方案

Content-Security-Policy内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。

注意:CSP开启可能会导致js、css出现报错,所以需要正确的配置开始CSP策略。

启用 CSP方法:一种是通过 HTTP 头信息的Content-Security-Policy的字段,另一种是通过网页的meta标签。

第一种:修改 nginx 配置文件

在nginx.conf 配置文件中,增加如下配置内容:

第二种:通过网页的meta标签

该指令说明:允许自身css、js和高德地图api、地图数据。

CSP 指令说明:

default-src : 定义针对所有类型(js/image/css/font/ajax/iframe/多媒体等)资源的默认加载策略,如果某类型资源没有单独定义策略,就使用默认的。

script-src : 定义针对 JavaScript 的加载策略。

style-src : 定义针对样式的加载策略。

worker-src:worker脚本。

img-src : 定义针对图片的加载策略。

font-src : 定义针对字体的加载策略。

media-src : 定义针对多媒体的加载策略,例如:音频标签audio和视频标签video。

object-src : 定义针对插件的加载策略,例如:object、embed、applet。

child-src : 定义针对框架的加载策略,例如: frame,iframe。

connect-src : 定义针对 Ajax/WebSocket 等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为400的响应。

sandbox : 定义针对 sandbox 的限制,相当于 iframe的sandbox属性。

report-uri : 告诉浏览器如果请求的资源不被策略允许时,往哪个地址提交日志信息。

form-action : 定义针对提交的 form 到特定来源的加载策略。

referrer : 定义针对 referrer 的加载策略。

reflected-xss : 定义针对 XSS 过滤器使用策略。

负载均衡:F5,Haproxy,lvs, nginx

阅读本文前,需熟悉OSI七层参考模型。

常见的负载均衡设备,有F5,Haproxy,lvs, nginx等。

F5是商用硬件负载均衡,性能很好,但是价格昂贵,除了负载均衡,还有应用交换、会话交换、状态监控等众多功能。

F5一般做四层负载均衡,但也支持七层负载均衡。

Haproxy(以下简称ha)是软件负载均衡,开源,一般做七层负载均衡,但也支持四层负载均衡。

Linux Virtual Server(以下简称lvs)是软件负载均衡,开源,二层或四层负载均衡,已集成到linux内核,自身有完备的热备方案(keepalived+lvs),稳定性极强。

nginx也是软件负载均衡,开源,通过反向代理实现负载均衡,是七层负载均衡,性能不如上面的几个。

tips1

有些公司,测试环境用ha/lvs/nginx,生产环境用F5。

tips2

nginx做web服务器时,一般做静态资源服务器和php的web服务器,所以很多公司,会采用F5+nginx或者ha+nginx的架构

tips3

微服务中的ribbon属于客户端负载均衡,上面的几种都是服务端负载均衡

二层负载均衡

在数据链路层通过修改mac地址实现,如lvs的DR模式(直接路由模式)

三层负载均衡

在网络层通过DNAT协议修改目标地址实现

四层负载均衡

用ip+端口实现请求转发

备注:tcp报文里并没有ip,但是四层负载均衡可以用ip+端口,是因为server可以拿到ip

七层负载均衡

通过重新发起http请求实现,即client把请求发给lb,lb把请求代发给server,再把server的响应返回给client,因此七层负载均衡也经常被称为代理,七层负载均衡设备也被称为代理设备。

七层负载均衡常用于内网与外网的通信,比如内网无法直接访问外网,需要通过代理设备代发http请求,这种情况下,代理设备需要配置双网卡,以同时与内外网络通信。

由于需要重发http请求,七层负载均衡性能较差,但是更智能和安全,因为应用层可以获取甚至修改请求的真实内容(即应用数据),比如cookie、url等,可以做一些智能的操作,比如根据cookie/url转发请求,也可以做一些安全操作,比如过滤特定报文、防止SYN Flood攻击等。

使用七层负载均衡时,服务的性能受限于代理设备的网卡带宽。

常见的负载均衡策略,有轮询、加权轮询、ip_hash、cookie、url_hash,根据服务器响应时间转发、根据最少连接转发等等。

备注:nginx可以安装第三方插件,使用第三方实现的策略

轮询:按服务器列表顺序转发请求,轮询是nginx默认的策略,本策略适合服务器配置相当、请求无状态(即不依赖session)的场景

加权轮询:如果不同服务器配置不同,可以为配置高的服务器增加权重

ip_hash:根据ip哈希结果转发,可以实现同一用户持续请求同一服务器(即会话保持),适合有状态(即依赖session)的场景,对png、jpg、js、css等静态资源的请求,不适合使用本策略

cookie:根据特定cookie转发请求,一般也是用于实现会话保持,比如为服务器A、B分别增加service-flag=a、service-flag=b的cookie,后续请求根据cookie转发

可以参考 haproxy实现会话保持

url_hash:根据url哈希结果转发,同一个接口始终请求同一台服务器,一般配合缓存使用,缓存接口返回结果

根据服务器响应时间转发:优先转发到响应时间较快的服务器

根据最少连接转发:优先转发到连接数较少的服务器

F5有一些特有的负载均衡策略:利用从应用程序和服务器收集到的各项性能指标,分析并转发

负载均衡有两个步骤:

1.根据什么算法选择真实服务端,即负载均衡策略,如轮询、加权轮询、ip_hash、cookie、url_hash等;

2.把请求转发到真实服务器,转发方式有二层到七层负载均衡

keepalived软件一开始是专为lvs设计的,后来加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)功能,因此,keepalived还可以作为nginx、haproxy、mysql等服务的高可用解决方案。

以nginx为例,为了防止nginx本身由于宕机等原因导致网站不可用,一般会搭两套nginx反向代理,用keepalived提供一个VIP。

一般情况下,VIP只在nginx主节点上工作,如果nginx主节点不可用了,VIP会自动漂移到从节点,自动漂移的原理即VRRP协议。

VIP漂移到从节点后,如果主节点恢复正常了,VIP是否漂移回主节点,取决于当前模式是抢占模式还是非抢占模式。

下图是一张简单的架构图,解释如下:

以上观点纯属个人意见,如果错误,欢迎指出,有些地方写的很简单,是因为我也不懂~

Nginx&Apache反向代理解决https站点无法展示http内容问题

随着浏览器安全策略的愈发严格, https和http的混合站点, 会出现各种无法展示的问题,本文即提供一种解决此问题的思路,使用NginxApache反向代理来解决https站点无法展示http内容问题

首先我们要改变有问题的链接, 例如我们的站点是 , 页面需要展示 ,

我们可以把链接转换成如下形态:

这样我们就可以使用Nginx和Apache的rewrite功能,去拦截以一个域名为开始路径的链接, 然后获取对应文件内容,这样的好处是链接的后缀名可以保持不变,在safari和iphone上也能正常使用, 单纯的服务端获取转发, 音视频在苹果系统上是无法使用的

下面来说下具体反向代理的配置

需要在nginx配置文件的http模块添加如下配置:

需要开启如下模块:

以上就是使用NginxApache反向代理来解决https站点无法展示http内容问题的方法, 其余有什么更好的方法的话, 也可以留言或私信交流

windows下跑nginx如何有效扩大最大连接数问题

1、点击“开始”按钮,在弹出的快捷菜单选项中选择并单击“控制面板”。2、在打开的“控制面板”窗口找到“管理工具”,如下图。

3、打开“管理工具”,找到“本地安全策略”,如下图。

4、打开“本地安全设置”,在窗口左侧找到并点击“安全选项”,如下图。

5、在“本地安全设置”右侧找到“交互式登陆:可被缓冲保存的前次登陆个次数”,如下图。

6、双击“交互式登陆:可被缓冲保存的前次登陆个次数”选项,打开“交互式登陆:可被缓冲保存的前次登陆个次数”对话框。

7、“本地安全设置”选项卡下面的“缓存”次数修改为50,即最大可同时允许50个用户同时连接本机,如下图。

【nginx安全策略】的内容来源于互联网,如引用不当,请联系我们修改。

赞(0)
文章名称:《nginx安全策略(nginx 策略)》
文章链接:https://www.fzvps.com/25143.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

相关推荐

  • 暂无文章

评论 抢沙发

评论前必须登录!