隐藏版本号
http {
server_tokens off;
}
经常会有针对某个版本的nginx安全漏洞出现,隐藏nginx版本号就成了主要的安全优化手段之一,当然最重要的是及时升级修复漏洞!
开启HTTPS
server {
listen 443;
server_name jszbug.com;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
}
ssl on: 开启https
ssl_certificate: 配置nginx ssl证书的路径
ssl_certificate_key: 配置nginx ssl证书key的路径
ssl_protocols: 指定客户端建立连接时使用的ssl协议版本,如果不需要兼容TSLv1,直接去掉即可
ssl_ciphers: 指定客户端连接时所使用的加密算法,你可以再这里配置更高安全的算法
添加黑白名单
白名单配置:
location /admin/ {
allow 192.168.1.0/24;
deny all;
}
上边表示只允许192.168.1.0/24网段的主机访问,拒绝其他所有!
也可以写成黑名单的方式禁止某些地址访问,允许其他所有,例如:
location /jszbug/ {
deny 192.168.1.0/24;
allow all;
}
更多的时候客户端请求会经过层层代理,我们需要通过$http_x_forwarded_for
来进行限制,可以这样写:
set $allow false;
if ($http_x_forwarded_for = "211.144.204.2") { set $allow true; }
if ($http_x_forwarded_for ~ "108.2.66.[89]") { set $allow true; }
if ($allow = false) { return 404; }
添加账号认证
server {
location / {
auth_basic "please input user&passwd";
auth_basic_user_file key/auth.key;
}
}