nginx禁止ip访问网站
Ⅰ linux 如何禁止通过IP访问网站,只让用域名访问网站
要实现只用域名访问而不用IP访问,要看所使用的web服务器软件,以nginx为例,可以通过如下方法进行设置:
1、用vim打开nginx的配置文件,一般为nginx/conf/nginx.conf
2、在server的设置里面添加如下内容即可:
#禁止IP访问
server{
listen 80 default;
server_name _;
return 500;
}
或者
server {
listen 80 fault;
server_name _;
rewrite ^(.*) http://域名 permanent;
}
Ⅱ nginx怎么设置指定目录ip访问限制
nginx中针对目录进行IP限制 ,这里以phpmyadmin目录只能让内网IP访问,而外网不能访问的配置方法。
nginxphpmyadmin针对内网ip用户开放、外网ip用户关闭(在前面的配置中,location ~ ^/目录/使用正则, 优先级高于location /的配置,所以nginx无法对首页进行解析)
代码如下:
server{
listen80;
server_nameexample.com;
access_loglogs/access.logmain;
location/{
roothtml;
indexindex.phpindex.htmlindex.htm;
}
location~^/phpmyadmin/{
allow192.168.1.0/24;
denyall;
location~.*.(php|php5)?${
root/var/mailapp/nginx/html;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
includefastcgi_params;
}
}
location~.*.(php|php5)?${
root/opt/nginx/html;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
includefastcgi_params;
}
}
Ⅲ 网站nginx配置限制单个IP访问频率,预防DDOS恶意攻击
对于网站来说,尤其是流量较大出名的网站,经常遇到攻击,如DDOS攻击等,虽然有些第三方,如Cloudflare可以挡,但对于动态网站PHP来说,只能挡一部分。这时候需要对于单个IP恶意攻击做出限流。nginx的两个模块可以限流。
nginx两个限流模块:
连接频率限制,ngx_http_limit_conn_mole:官方文档:https://nginx.org/en/docs/http/ngx_http_limit_conn_mole.html
请求频率限制,ngx_http_limit_req_mole:官方文档:https://nginx.org/en/docs/http/ngx_http_limit_req_mole.html
网上理论很多,根据名字可知:
当然还是看不懂的话,通俗点讲(相对于时间比较):
比如秒杀,抢购,连接频率限制和请求频率限制应该配合使用 , 使用连接频率限制同一IP同时只能有3个连接, 再使用请求频率限制对于同一ip的请求,限制平均速率为5个请求/秒 , 这样比单独只使用一种限制要好很多。
比如只使用请求频率限制 , 可以精确地限制同一ip1秒只能发起5次的http请求 , 假如同一ip1秒内发起了100000次请求 , 虽然限制了只有5次成功响应 , 但是其他的99995次的请求TCP握手建立http连接是不是会消耗服务器资源? 所以还需要配合使用。
1、limit_req_zone,示例:
2、limit_conn_zone,示例:
3、搭配一起使用
1、ab命令
ab是apache自带的压力测试工具。一般不用额外安装,ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
测试命令
2、wrk命令
需自己安装,地址:https://github.com/wg/wrk
安装
测试命令:
还有其他压测工具,自行研究
Ⅳ 如何配置nginx达到只允许域名访问网址,禁止ip
Nginx 禁止IP访问
我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了。下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效最关键的一点是,在server的设置里面添加这一行:
listen 80 default;
后面的default参数表示这个是默认虚拟主机。
Nginx 禁止IP访问这个设置非常有用。
比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:
server {
listen 80 default;
return 500;
}
Ⅳ Nginx中怎么限制某个IP同一时间段的访问次数
如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候。其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。
cc攻击一般就是使用有限的ip数对服务器频繁发送数据来达到攻击的目的,nginx可以通过HttpLimitReqMol和HttpLimitZoneMole配置来限制ip在同一时间段的访问次数来防cc攻击。
HttpLimitReqMol用来限制连单位时间内连接数的模块,使用limit_req_zone和limit_req指令配合使用来达到限制。一旦并发连接超过指定数量,就会返回503错误。
HttpLimitConnMol用来限制单个ip的并发连接数,使用limit_zone和limit_conn指令
这两个模块的区别前一个是对一段时间内的连接数限制,后者是对同一时刻的连接数限制
文章目录
1 HttpLimitReqMol 限制某一段时间内同一ip访问数实例
2 HttpLimitZoneMole 限制并发连接数实例
3 nginx白名单设置
HttpLimitReqMol 限制某一段时间内同一ip访问数实例
http{
...
#定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
#以$binary_remote_addr 为key,限制平均每秒的请求为20个,
#1M能存储16000个状态,rete的值必须为整数,
#如果限制两秒钟一个请求,可以设置成30r/m
limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
...
server{
...
location {
...
#限制每ip每秒不超过20个请求,漏桶数burst为5
#brust的意思就是,如果第1秒、2,3,4秒请求为19个,
#第5秒的请求为25个是被允许的。
#但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。
#nodelay,如果不设置该选项,严格使用平均速率限制请求数,
#第1秒25个请求时,5个请求放到第2秒执行,
#设置nodelay,25个请求将在第1秒执行。
limit_req zone=allips burst=5 nodelay;
...
}
...
}
...
}
Ⅵ 镐庝箞绂佹㈡煇涓猧p璁块梾 ubuntu nginx
Nginx鍙浠ヨ剧疆绂佹㈤氲繃IP璁块梾镄勚
鍦ㄤ换涓链夋晥镄凬ginx閰岖疆鏂囦欢涓锷犱笂浠ヤ笅涓娈
# forbidden use ip address access
server {
listen 80 default_server;
server_name _;
return 444;
}
鍏跺疄镐濊矾寰堢亩鍗曪纴灏辨槸鐢↖P璁块梾镄勬椂鍊欙纴杩斿洖444阌栾