1. 程式人生 > >Nginx 禁止IP訪問 只允許域名訪問

Nginx 禁止IP訪問 只允許域名訪問

nginx 禁止ip訪問 只允許域名訪問


今天要在Nginx上設置禁止通過IP訪問服務器,只能通過域名訪問,這樣做是為了避免別人把未備案的域名解析到自己的服務器IP而導致服務器被斷網,從網絡上搜到以下解決方案

我們在使用的時候會遇到很多的惡意IP攻擊,這個時候就要用到Nginx 禁止IP訪問了。下面我們就先看看Nginx的默認虛擬主機在用戶通過IP訪問,或者通過未設置的域名訪問(比如有人把他自己的域名指向了你的ip)的時 候生效最關鍵的一點是,在server的設置裏面添加這一行:
listen 80 default;
後面的default參數表示這個是默認虛擬主機。
Nginx 禁止IP訪問這個設置非常有用。

比如別人通過ip或者未知域名訪問你的網站的時候,你希望禁止顯示任何有效內容,可以給他返回500.目前國內很多機房都要求網站主關閉空主機頭,防止未備案的域名指向過來造成麻煩。就可以這樣設置:

簡單直接的修改方法:

修改nginx.conf 文件
修改成

server {
listen 80;
server_name www.xcn.cn;  #這裏是你自己指定的域名
...
}

再在上個server後繼續添加一段:

就是為了訪問默認網站直接返回403

server {
listen 80 default_server;
server_name _;
return 403;
}

這裏是在接收到ip訪問或非指定域名訪問時會返回403錯誤

下面的一些比較詳細的介紹:

server { 
  listen 80 default; 
  return 500; 
 }

也可以把這些流量收集起來,導入到自己的網站,只要做以下跳轉設置就可以:

server { 
  listen 80 default; 
  rewrite ^(.*) http://www.xcn.cn permanent; 
 }

按照如上設置後,確實不能通過IP訪問服務器了,但是在應該用中出現當server_name後跟多個域名時,其中一個域名怎麽都無法訪問,設置如下:

server { 
  listen 80; 
  server_name  xcn.cn  
 }

沒更改之前,通過server_name 中的www.xcn.cn xcn.cn 均可訪問服務器,加入Nginx 禁止IP訪問的設置後,通過xcn.cn無法訪問服務器了,www.xcn.cn可以訪問,用 Nginx -t 檢測配置文件會提示warning:


[warn]: conflicting server name “xcn.cn” on 0.0.0.0:80,
ignored
the configuration file /usr/local/Nginx/conf/
Nginx.conf syntax is ok
configuration file /usr/local/Nginx/conf/Nginx.
conf test is successful
最後通過在listen 80 default;後再加server_name _;解決,形式如下:

#禁止IP訪問 
server 
{ 
listen 80 default; 
server_name _; 
return 500; 
}

或者

server { 
listen 80 dufault; 
server_name _; 
rewrite ^(.*) http://www.xcn.cn permanent; 
}
#禁止IP訪問 
 server { 
  listen 80 default; 
  server_name _; 
  server_name  xcn.cn  
  return 500; 
 }

這樣,通過xcn.cn就能訪問服務器了。

第一種情況:訪問A站定向到B站

server { 
server_name www.xcn.cn ; 
rewrite ^(.*) http://www.xcn.cn$1 permanent; 
}

第二種情況:不是訪問A站的全部重定向到指定頁面

server { 
server_name www.xcn.cn; 
if ($host != ‘jb51.net‘) { 
rewrite ^/(.*)$ http://www.xcn.cn/$1 permanent; 
} 
}

如果寫在第一個server段
使用IP訪問時也將被重定向

本文出自 “小菜鳥” 博客,請務必保留此出處http://baishuchao.blog.51cto.com/12918589/1940183

Nginx 禁止IP訪問 只允許域名訪問