|
|
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。
, }& U4 m- W6 L4 r' m3 K
1 ~# V# v5 _! s: z+ O, K有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。
% M M4 S: s4 u) J* }8 z3 T) v ?) A+ s4 I( S6 J3 x
Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:* r6 H) D# }' k0 G8 ?& E
5 O5 g" E* J* e; m0 t复制代码代码示例:
. i/ |+ {1 P8 V* j" Blisten 80 default;
7 k& L; a7 n2 Z
. \+ x4 v. ] i: S2 S4 s+ _1 C2 j
后面的default参数表示这个是默认虚拟主机。% O; g7 q M) }2 u
% y/ O% R2 Y7 y2 Z9 sNginx 禁止IP访问这个设置非常有用。
- ^( I! d3 I7 ^2 l1 _- `( [: P
: A# ~( g" o. N: l; u- n. X3 N比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
* [$ L% T5 Y6 ^ G# [3 F( e
6 x/ ~3 W2 a6 `7 C目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。% o+ I) y; N i% K {
6 m, o1 h2 O/ ]# C u5 X- i设置:
5 S, }8 e/ Q- ^4 n. A! E Y' Y. o% p W
复制代码代码示例:8 G2 x7 ]: n2 x1 R/ z! o I
server {
; r$ C F' T& E5 O { listen 80 default; - \9 r7 k% x$ x& H1 h
return 500; & ~! m# ]( c g" M& m4 v R
}
0 i" L3 k4 O# A: ~6 L/ p* [7 E6 P2 B- {( D7 X2 {
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:; q( b; D* A- p/ `' {
& y4 y2 E- p( w' m& ]& d j复制代码代码示例:
( d4 f4 k. b0 d! w/ xserver {
0 ^: F" ^6 c/ B0 p listen 80 default; + Z) X D& E/ H1 I: h: M
rewrite ^(.*) http://www.mydomain.com permanent; 3 z1 ~, C; f5 s9 P0 @& O
}
+ |- e3 f* ^: r3 _; H/ O: g$ r& A, n- ^1 s5 H6 G g3 |0 ^4 f
按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:! k4 j. V& |* A6 V
: }: i+ I! v" l C; i+ l5 E; ?4 W复制代码代码示例:" q/ U2 D, u! B0 { \& d p3 T
server {
h# X' ^5 `2 y8 m5 p, U; @6 O listen 80; % I2 X8 g5 ]7 A6 w2 n+ y! H
server_name www.example.com example.com
) }. [2 F& R6 {3 A7 b3 z! ^& _$ Z }
% n: A: X( Z' f& H. [5 S& L+ @, U ) o% [1 m. y& e+ X# B2 a3 A
) O: g5 @/ H1 E2 o" n; s没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:
. H* d, j7 a8 I
. }' n, |" u) ?7 \! o [warn]: conflicting server name “example.com” on 0.0.0.0:80,
4 ~1 a- G8 y9 t, e' ] ignored
8 ]' @; V/ u4 `! e the configuration file /usr/local/Nginx/conf/; t5 f+ K7 b5 E+ g' h* l
Nginx.conf syntax is ok : R- x( U i% ^* n% s; s; G7 c, T
configuration file /usr/local/Nginx/conf/Nginx." `* |- R" j c0 E8 F6 g w- O& ^+ _
conf test is successful$ T) T' h2 `; o* M+ z3 I- C+ I
3 e1 a9 u$ D$ Q9 F
; t7 \' U# Q- ?# V最后通过在listen 80 default;后再加server_name _;解决,形式如下:
# s0 i; i! n' P% Z: w8 a
. V4 z! _3 P( Q9 m复制代码代码示例:% W; C* A, ]' ]4 V, {2 F$ Y
#禁止IP访问 ( P/ Q: m% T! r+ [% q" f: e
server { 6 V, p1 G/ l5 Z! m
listen 80 default; , m h' m. n: K
server_name _; + J: v% R: @8 R) j
server_name www.example.com example.com 8 k: j! G1 {% q, x8 j- Q
return 500;
" _1 O) I5 v p4 }3 [0 P0 ] r} 4 b Q: p- t0 c1 E6 s
( H! |. y/ }0 i& i
6 F0 ?$ k1 r- c! l
这样,通过example.com就能访问服务器了。
4 d: n! Y2 h1 S
" |) o: o9 ~6 z; t以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。
4 y: ]$ W/ F1 L) d' o; `0 S |
|