1. Nginx禁止某IP段访问服务器
两种方法,
第一种 ,新建一个xxxx.conf的文件
语法大概说明:
deny: 为禁止的ip
allow: 为允许的ip
你可以理解为,黑名单,白名单
192.168.1.10 禁止或允许单个ip
192.168.1.0/24 禁止或允许192.168.1.1-192.168.1.255也就是禁止这个网段内所有的ip
有关于ip的掩码这块不了解的自行网络,
内容例为:
# 禁止单ip
deny 192.168.1.10;
# 禁止ip网段
deny 192.168.1.0/24;
# allow 为允许 ip写法一样,就不多写了
allow 192.168.1.10;
创建好之后进入自已nginx服务器的网站对应的xxxxx.conf文件或nginx.conf文件中,在server{}中include 加载一下自己创建的xxxx.conf文件;
命令如下:
server{ xxxxxxxxxx xxxxxxxxxx include /xxxx/xxx/xxx/xxxx.conf xxxxxxxxxxx xxxxxx }
第二种 为 就直接将deny allow 写在网站对应的Nginx 服务的xxxxx.conf文件或nginx.conf文件中
例如:
server{ xxxxxxxxxx xxxxxxxxxx allow 192.168.2.0/24; deny 192.168.1.10; xxxxxxxxxxx xxxxxx }
经我个人测试 规则为先允许后禁止:
如:
allow 192.168.1.100;
deny 192.168.1.0/24;
那么真个网段中只有192.168.1.100才可以访问服务器,
如果先
deny 192.168.1.0/24;
allow 192.168.1.100;
那么无效就是全都不能访问
2 Nginx禁止后403 404等自定义页面跳转
举个简单的例子,
加载禁止或允许IP方法和上面的一样,就不多了,
下面采用第二种禁止或允许IP的方法,简单说明:
# 自定义禁止IP和跳转的过程学习
server { deny 192.168.1.0/24; error_page 403 /xxxx.html; # 禁止ip后返回Nginx默认403 xxxx.html 为自己要定义跳转的html location = /xxxx.html{ root /xxxx/xxxxx/xxxxx; # 这里的xxxx....为你的xxxxx.html文件存放的路径最后 ; 号别忘了 allow all; } }
# 注:编写时很多行尾要 ; 分号别忘了,
网络文章一大抄,很多网写的xxxx.html 路径 最后连文件明也带上了,xxxx/xxxx/xxxxx/xxxx.html;
也不知道是不是版本问题,我的版本是1.18.0 后面带上xxxx.html文件名会报404错误,根据日志查找的原因
root /xxx/xx/xxxxx这段只写对路径即可,确保此路径下有 xxxxx.html自己的文件就可以
如果侧试玩或简单的一两条 就采用第二种方法
如果禁止IP段很多,采用第一种,这样ip 也清晰好管理,
3 禁止用ip访问服务器
server { listen 80 default; # 在这里加上default server_name __; # 经个人测试_一个下划线,保存正常,重载重启报错但可以启动正常,__两个下划线都正常 return 500; # 这里返回状态码,301 400 404 500等等都可以,默认显示nginx状态码 }
直接反回状态码浏览器报错,体验不好,这里可以做跳转:
server { listen 80 default; server_name __; rewrite ^(.*) https://django.qhweixin.com permanent; # 跳转到自己想要的网址 }
也可以用第二种方法:
server { listen 80; server_name django.qhweixin.com; # 域名 if ($host != "django.qhweixin.com") { # 判断如果host不等于域名时返回状态码 return 403; # 这里也是状态码,301 400 500等等,写什么显示什么, } }
方法:
如果要跳转
return 301 https://django.qhweixin.com; # 就直接跳到你需要网站
return 200 "您访问的网站不存在或已删除"; # 200 后跟字符串也可以直接显示
字符串乱码要加 charset utf-8;谷歌200的时候打开会下载,加
add_header Content-Type "text/plain;charset=utf-8";
server { listen 80; charset utf-8; add_header Content-Type "text/plain;charset=utf-8"; server_name django.qhweixin.com; # 服务器IP if ($host != "django.qhweixin.com") { return 200 "您访问的网站不存在或已删除"; # 内容可自行编辑 } }
如果访问A网站跳转至B网站
server { listen 80; charset utf-8; add_header Content-Type "text/plain;charset=utf-8"; server_name django.qhweixin.com; # 服务器IP if ($host ~ '^A.com'){ return 301 https://B.com$request_uri; } }