|
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。6 R n, \- O& W
: q9 w4 h" j$ p+ w' S; X+ R. ?/ h有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。0 @4 T5 A5 q. u% j2 v5 _
5 T4 ~7 X, D8 l+ V$ }7 |% J6 qNginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
+ g9 K3 e8 {4 Y
+ S2 Y$ L- T( b复制代码代码示例:. R9 P9 a4 Y: c* W
listen 80 default; + W! R& q& O1 c& M
% m, ]& v. h4 p- q3 v+ Y" i9 V. b Z! M0 Z3 X5 p- X
后面的default参数表示这个是默认虚拟主机。2 ?2 ^: V; E! T4 O
( I( l; @$ ^! }; |' ANginx 禁止IP访问这个设置非常有用。! B4 d+ c# u3 ?# D( ]5 b w& a) x
0 e. c6 N6 ? i5 p( _, y比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
" a& E6 G6 r4 n. o7 y2 w- Q2 C3 Q3 l/ I- F+ u
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。
& u0 f3 |4 ^, }: n6 @/ h- C+ m: X2 R' j. ?+ {
设置:
- {$ R/ i9 z! D. y* y1 h 2 t* ^5 i/ ?. q. a! v1 F2 y5 u5 @
复制代码代码示例:
/ I: W) X$ a4 Sserver {
: F! y& `1 V- j; v0 [ listen 80 default; + l9 y" E5 c* H2 J; h" `4 J8 B
return 500; 4 K+ h& @$ |: g
}
6 Z" g6 a- s( d% b4 q5 z y- t7 @/ H+ i9 _# ^6 W* @" b
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:
, {9 m+ ]( H$ R3 T 9 ]( p& C6 V# ]
复制代码代码示例:5 z" E5 E2 O+ }* C& Y
server {
7 ?) ]3 c/ T% ~. [ L% }1 C! A listen 80 default; 3 |1 x$ {' d8 |: o7 Y2 @
rewrite ^(.*) http://www.mydomain.com permanent; ! B4 w6 [4 n* r. m
}
+ Q" y* G I# h0 `) k* i0 o$ t5 ^6 P& _2 p2 }% K. [8 d
按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:
0 R8 A" n `1 O3 |: h( k $ l) g8 _2 j3 u ~& V8 s$ a6 |$ m
复制代码代码示例:
% d# H% O9 k \' r' Y6 ?server { $ ?) G/ ?# J9 M3 j% v2 c& S
listen 80; * O: y. y: @' Y7 y1 S, D7 i3 J
server_name www.example.com example.com
7 K; W, }+ i5 Y$ k }
6 ~; f; Y9 v6 N, h' |
! ]- f: J) W4 Q. T A, G+ h4 [ s
/ e+ d+ X+ g9 z& O1 q+ S& l9 m没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:' ]+ l& T2 e9 G G" G; z
6 V' ^& m2 k/ ?0 M. O; ~- h X
[warn]: conflicting server name “example.com” on 0.0.0.0:80, - O' Y o5 H2 p+ `7 T+ z) E" u
ignored 7 v1 W5 H+ Z6 t
the configuration file /usr/local/Nginx/conf/' D7 f* o8 ?8 x6 ^
Nginx.conf syntax is ok
5 f5 w5 \+ r2 t+ M1 [( i configuration file /usr/local/Nginx/conf/Nginx.
. f+ E1 o/ Z+ @5 J+ [& v% b6 H conf test is successful ^! H* f" u# d) {: I
7 b. s0 x. ]; I
+ e, P( q+ J$ x" C( }最后通过在listen 80 default;后再加server_name _;解决,形式如下:
/ R( N* ?" y- I+ E " e8 g/ E0 O& h9 X
复制代码代码示例:. n: h9 I+ Y# Q7 u4 b7 f. l, P
#禁止IP访问
+ E# z' R& s; @/ h7 R( r# Qserver {
+ O5 e, d* \& b1 G3 k listen 80 default; 2 h4 l* \1 ^; _) S, M2 `/ Q
server_name _; . d/ `3 p0 I! t6 z& J# ~3 K! ?
server_name www.example.com example.com
* s: }5 R# Q6 B9 ~( x* D# t return 500;
8 u9 l6 ]7 O' a; k9 t. \3 J# O} # K; M- q- r0 B" g$ {
2 m7 H1 I) g* L+ D
3 e5 D3 u# D( t* H; h7 e6 z这样,通过example.com就能访问服务器了。
3 H" ]6 h7 y6 A; g0 G( C2 `! n5 f8 L8 j* C6 c' U3 {* g0 q1 p+ U( j
以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。" O+ D5 m& x+ d5 H3 E, ?
|
|