安全是每个系统都需要考虑的关键因素,Nginx在这方面提供了丰富的功能,使我们可以就实际情形做很精细调整。这些功能包括防信息暴露、客户端访问限制、通讯加密、防DDos攻击、防爬虫、防非法引用及防非法域名请求等。
目录
防信息暴露
关闭版本号
Nginx默认会在HTTP的响应头中包含服务器版本号信息,攻击者可以利用此信息进行攻击和细节披露。可关闭版本号的显示,指令如下:
server_tokens off;
关闭目录列表
如果Nginx的目录没有默认的index文件,会自动展示目录下的文件列表,这可能会暴露敏感信息。可以通过禁止自动目录列表的方式来阻止此行为。
示例代码:
location / {
autoindex off ;
}
客户端访问限制
Nginx可以对客户端进行访问限制。
限制客户端地址访问
直接通过allow或deny限制某些客户端地址的访问。指令如下:
allow address | CIDR | unix: | all;
deny address | CIDR | unix: | all;
允许或不允许客户端访问。
参数:address:直接IP地址形式;CIDR:无类别域间路由;unix: unix套接字;all-所有
示例:
location / {
# 将按顺序检查规则,直到找到第一个匹配项
# 单独ip 192.168.1.1可访问
deny 192.168.1.1;
# CIDR: 192.168.1.1-192.168.1.255(掩码:255.255.255.0)可访问
allow 192.168.1.0/24;
# CIDR: 10.1.1.1-10.1.255.255(掩码:255.255.0.0)可访问 (注意不包括10.1.0.x)
allow 10.1.1.0/16;
# IPv6网络2001:0db8::/32进行访问
allow 2001:0db8::/32;
# 符合上述之外的不可访问
deny all;
}
国家或城市位置限制访
可以通过国家或城市位置限制访问,详见精通Nginx(12)-流量管控
禁止不安全的HTTP方法
默认情况下,Nginx支持多种HTTP方法,包括GET
, HEAD
, POST
, PUT
, DELETE
, MKCOL
, COPY
, MOVE
, OPTIONS
, PRO