當前位置:首頁 » 文件傳輸 » nginx怎樣設置ip不能訪問
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

nginx怎樣設置ip不能訪問

發布時間: 2023-06-29 07:33:44

A. 如何配置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;
}

B. 如何設置Nginx,使得其可以拒絕某些IP連接

nginx拒絕或允許指定IP,是使用模塊HTTP訪問控制模塊(HTTP Access).
控制規則按照聲明的順序進行檢查,首條匹配IP的訪問規則將被啟用。
location / {
deny 192.168.1.11;
allow 192.168.1.22/224;
allow 10.1.1.12/126;
deny all;
}

deny表示拒絕,allow表示允許。

上面的例子中僅允許192.168.1.22/224和10.1.1.12/126網路段訪問這個location欄位,但192.168.1.11是個例外。

C. 網站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

安裝

測試命令:

還有其他壓測工具,自行研究

D. 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;
}
}

E. nginx 禁止ip訪問

因為這裡面只有一個server域,並且又設置了default標識,因此,此處可能是可以用ip進行訪問的。

如果想屏蔽掉ip訪問,只允許域名訪問的話,可以增加如下配置。

server {
#....
if ( $host ~* "d+.d+.d+.d+" ) {
return 400;
}
location / {
#....
}
}

這樣,當用ip訪問時,$host的值就為ip地址,如果$host否和ip的正則,就直接返回400給客戶端。

你不防線這樣試試。

F. nginx如何禁止代理IP訪問

nginx有禁止ip訪問的功能,比如你想禁止的代理ip是2.2.2.2,那麼配置可以寫:
location / {
deny 2.2.2.2;
}當然nginx非常的靈活,他也可以禁止某個url,或者是正則匹配的規則。黑白名單都可以做,功能很強大。我只給你舉了一個簡單的例子。