|
|
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。1 \/ q( G8 x/ j' ~3 n1 `& x
& N7 d! X( D" I/ ~; w, f0 ~) N
有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。
: c) N4 D% P u* s0 `' m- y, Y- E- }( _3 N; u1 ]' J
Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
X- {. p% \+ \3 ~/ K
% U4 r) z; J8 `& @复制代码代码示例:7 W9 D7 m/ ?; S
listen 80 default;
& w; A$ C0 [- v6 R: o3 ?) g + A3 |0 e& P8 D4 }; W* w& r
9 M, P2 ~8 u2 n- R后面的default参数表示这个是默认虚拟主机。2 \2 o# V* A* x/ R1 K+ B( p
- C; N q( N6 `- O( A1 O; J$ Y
Nginx 禁止IP访问这个设置非常有用。
$ a& H, u- y$ I' l. D9 L4 b+ s2 D( n8 t Y
比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
6 \$ l) @1 M: h5 l# \5 }
M' o1 X% k' R目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。
4 W1 x, O" { p0 o7 r3 ]1 C* @& [1 ]( e2 |
设置:/ t6 X5 \4 W' ~3 Q! t
7 n4 Q/ h3 K0 \6 C1 I7 s0 ]" @8 {复制代码代码示例:
. [& {- _' M4 F- B0 e% v" Cserver {
" ]* r* b/ [# W) h/ b5 J( t listen 80 default;
$ M# g. Q4 D; H- G# @+ c9 H F; R return 500;
+ g6 M+ O& \; x" k# }) e; f. @/ f, c }
r% ]! \8 o' ]. k5 x4 M G2 |3 b- K! e& N
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:' w7 e& @% E+ @' Y. D/ [
0 w M% j4 a# u9 v: m9 k
复制代码代码示例:- S/ @! n* ]/ O
server { * ^! r0 N4 [8 z: k$ D
listen 80 default;
8 u z8 | k! f7 Z rewrite ^(.*) http://www.mydomain.com permanent; , [. M. J* |: {
}( S9 ~6 f3 z) e& p, F' c+ I
& X) V# n/ L K! a按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:" M# y3 W) e; u' z) q: ]5 x
- J2 a$ t% V# ~* X# X3 g; q8 i ~
复制代码代码示例:! ^7 w3 Z( }$ {- l
server {
& _ d, x G) @/ J0 J listen 80;
$ N r9 q6 C7 f+ y server_name www.example.com example.com 0 @. D& h, j7 X
}5 Z, t2 U4 {+ y0 I# i9 ^8 Y
4 o9 J- `$ {- D
- j& ]- ]& {% N- c3 R没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:1 ^$ _0 N2 Q {9 S" Z
: W5 f& p/ U0 p3 d6 v0 U) G [warn]: conflicting server name “example.com” on 0.0.0.0:80,
$ ~7 J g/ U$ e2 i T ignored
5 K0 a. O' w2 `3 S the configuration file /usr/local/Nginx/conf/# O; v5 K6 Z4 B1 t) ?
Nginx.conf syntax is ok
0 Z$ V5 A/ s+ y4 E1 l4 r% r configuration file /usr/local/Nginx/conf/Nginx.
) e4 E5 U, R9 c conf test is successful" V/ T$ _- t+ e4 P C" I
* L0 }7 G0 {/ b* S
* V$ `3 K& z3 c7 t" n! V' p最后通过在listen 80 default;后再加server_name _;解决,形式如下:
' ]8 D# K, Q0 ?' p1 u* U
( `; W' V& B% Y1 I& `$ N1 D1 f复制代码代码示例:
% s" c) ^/ x, |! s# L2 K#禁止IP访问
2 L$ P6 ]$ X& I- r- Eserver { / r _, f0 Y; c: a/ F4 i
listen 80 default;
$ x. t& ^+ R, A& u server_name _;
/ [/ t: `6 v+ L+ L0 y server_name www.example.com example.com
$ k$ S6 ?/ ]: [' n return 500;
$ q6 }7 G: L; A} , [. q; |" ?9 U) c
7 z' i! _$ A' @% S1 |
. [+ g! y9 C1 @这样,通过example.com就能访问服务器了。
! Z9 N2 @& d# S/ u' z9 l# s9 _/ b7 a& u
1 V5 o/ a( F( W; N3 D- b' F' C0 e以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。/ D% b) w" _( S; ~& r
|
|