副标题[/!--empirenews.page--]
隐藏版本号
- http {
- server_tokens off;
- }
经常会有针对某个版本的nginx安全漏洞出现,隐藏nginx版本号就成了主要的安全优化手段之一,当然最重要的是及时升级修复漏洞。

开启HTTPS
- server {
- listen 443;
- server_name ops-coffee.cn;
-
- 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 /ops-coffee/ {
- 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;
- }
- }
限制请求方法
- if ($request_method !~ ^(GET|POST)$ ) {
- return 405;
- }
$request_method能够获取到请求nginx的method
配置只允许GETPOST方法访问,其他的method返回405
拒绝User-Agent
- if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl) {
- return 444;
- }
可能有一些不法者会利用wget/curl等工具扫描我们的网站,我们可以通过禁止相应的user-agent来简单的防范
Nginx的444状态比较特殊,如果返回444那么客户端将不会收到服务端返回的信息,就像是网站无法连接一样
图片防盗链
- location /images/ {
- valid_referers none blocked www.ops-coffee.cn ops-coffee.cn;
- if ($invalid_referer) {
- return 403;
- }
- }
valid_referers: 验证referer,其中none允许referer为空,blocked允许不带协议的请求,除了以上两类外仅允许referer为www.ops-coffee.cn或ops-coffee.cn时访问images下的图片资源,否则返回403
当然你也可以给不符合referer规则的请求重定向到一个默认的图片,比如下边这样
- location /images/ {
- valid_referers blocked www.ops-coffee.cn ops-coffee.cn
- if ($invalid_referer) {
- rewrite ^/images/.*.(gif|jpg|jpeg|png)$ /static/qrcode.jpg last;
- }
- }
控制并发连接数
可以通过ngx_http_limit_conn_module模块限制一个IP的并发连接数
- http {
- limit_conn_zone $binary_remote_addr zone=ops:10m;
- server {
- listen 80;
- server_name ops-coffee.cn;
-
- root /home/project/webapp;
- index index.html;
- location / {
- limit_conn ops 10;
- }
- access_log /tmp/nginx_access.log main;
- }
- }
limit_conn_zone: 设定保存各个键(例如$binary_remote_addr)状态的共享内存空间的参数,zone=空间名字:大小
(编辑:PHP编程网 - 黄冈站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|