|
|
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。# W# X9 b! d2 X0 Z U
7 Y+ i2 ]% Q- u& m- E有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。 K' t' u$ n; O1 x2 E2 A+ k
9 F$ g. v0 ]% p. c8 j4 ^3 B* \# j, q
Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
- H& I2 M2 `+ C& `
5 P. t+ k2 L1 }( P复制代码代码示例:& `' Z* b9 @0 p4 a! o
listen 80 default; , ^( I3 {, r" [1 V& ^' W' X# O
) F& G8 e4 C9 \5 [! P3 n5 `$ ?, P4 K4 _6 a% m! S5 o3 [0 k6 D
后面的default参数表示这个是默认虚拟主机。
- o- T# L J) I
" Z" m. L- M+ i+ W& T8 oNginx 禁止IP访问这个设置非常有用。
. J' o& t C9 Y v$ @3 s/ {) v% a/ ^; T/ @5 A3 z
比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。+ t& u& t) B3 ^5 E
{* N% }. M, ?" D
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。/ ^% _; t8 V7 y) J7 O6 f6 E' ~
0 ]6 D3 y/ Y/ ]1 U. z
设置:6 X! v6 w4 B& ]. A2 J" A# @
& J5 @2 |2 D3 ]+ c复制代码代码示例:
7 ^7 ^1 c. r2 b& H2 zserver { ( I, d$ i3 \6 i5 o3 l* x
listen 80 default; 5 U9 K) u! A8 D% n
return 500;
, |3 l4 x2 G. l5 \5 J( a( D }
/ m+ T% n2 ]* s6 t5 I% \ j v+ h- x( Z
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:; G4 U3 H$ o" b+ h% m& W _
8 b# @2 I! `, z复制代码代码示例:
, c2 Q) l$ q# \$ Mserver {
9 w5 _; U2 Y& {. p. \: d. F* u listen 80 default; . V) n1 N) {# p; R0 o: A1 x
rewrite ^(.*) http://www.mydomain.com permanent;
" D1 ?+ E0 l: O2 C2 a; S) P! q C }" T, f- h0 D, N
5 t7 C" a9 o/ {, Q* d4 C/ J按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:
6 K. e2 {0 }5 q) U% {
! P) Y" {/ d8 Y" v; N* W! I: g复制代码代码示例:
% Z2 a" G: J- {/ ]4 ~3 |server { 2 I: C7 |5 v& p' U% Y: e
listen 80; 3 r: ] Q+ ]' y7 C U. f
server_name www.example.com example.com
- o$ ]6 v3 n# z1 z }
: N. k+ M- I1 {1 e1 e 6 d- |. ]' L4 g" U) T, k# j
8 y J( D1 R5 @" Z# {没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:
+ |7 l% z7 }, F
: B+ _+ @5 {0 B: p/ o [warn]: conflicting server name “example.com” on 0.0.0.0:80, " G, S! @" I! P h/ Y
ignored / e/ r% n% D' b2 b# ~2 W! l
the configuration file /usr/local/Nginx/conf/
& {5 p* H) g" r- I Nginx.conf syntax is ok
3 p) P8 b. V$ S* F3 A7 d& L configuration file /usr/local/Nginx/conf/Nginx.
( S2 Y" {2 N1 }8 G$ h& e( L conf test is successful9 a9 y7 S* l7 T, F
0 g( p& Z8 }, O3 D
* t' d9 T" g- m! F. B最后通过在listen 80 default;后再加server_name _;解决,形式如下:' i: q! X2 h0 t, J9 z/ d: q
+ G+ F, @, c, N! a& J6 r! s复制代码代码示例: H2 a0 ~* W% V0 F! `/ b# L
#禁止IP访问
6 l% h5 m U" x; S$ N6 [server {
/ D+ p7 v" u. F1 u* @6 ` listen 80 default;
. X' N4 ]2 k2 b, Z server_name _;
3 S3 b( X4 Y1 B- g9 A, m server_name www.example.com example.com
8 Z: }3 a/ l( a7 Z0 `6 ?' \8 k return 500; 6 _9 k E( V1 |. b3 _$ x! n; x, ^
}
$ ]/ O7 W$ b. } & I' W5 J, J8 \
& p0 Y A. M) V7 U4 z这样,通过example.com就能访问服务器了。) d: M' `7 Q& T- T" F0 b" E
9 d# h( u0 [% q4 m. T/ F [以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。! k. f. W' Z) i" a
|
|