|
|
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。7 [/ ^- d F+ ~0 D( n3 N8 f
; F; a m2 [; X, H2 Z
有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。
+ z( K8 A) ^* ~2 g1 X
6 S: E% j2 Q8 m7 s! H# WNginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
5 _: d4 e7 |: {, U, v 5 _& Z0 h: L: C. A
复制代码代码示例:; _2 Y( w" q7 b4 v
listen 80 default;
7 R1 |- a3 i. I" E
$ K& Y# F- D# R2 i0 e9 T2 {6 I' v3 \
后面的default参数表示这个是默认虚拟主机。% \( }4 ~7 e! l3 t
" w9 g( D0 e O' C# X9 }Nginx 禁止IP访问这个设置非常有用。
+ j: ]7 Q+ K( Z7 Y# V, J
8 M1 r' y1 l" d& i& n9 x比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
; ^! a& `4 ]1 [8 x$ E3 S4 \- X, G, w
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。
, L! n7 C2 r6 M4 V9 X- u l9 H- a8 W1 E! C- C4 a/ ^: v! V
设置:6 j7 F i$ }' z: o
( A4 ~' h: X* s% W/ ^
复制代码代码示例:+ B! g$ C6 s, L7 R7 X1 g: E
server {
5 z+ m5 t0 T ]$ d listen 80 default; 5 r0 i: p+ |; k9 S7 r
return 500; * P5 e3 ?# k* w, _7 y% d
}
0 ]- H5 J3 X+ `% @' ^9 F4 K; a. L4 Y- P7 o& K0 U, ~0 @
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:$ l G. e( |0 v% M0 `4 V0 |6 X
* {# e5 O. ^2 D6 O/ k) y( P1 F8 _2 d复制代码代码示例:( z; C2 @5 A, k9 V# }. `
server { . q+ ]: \ P5 [9 h4 d
listen 80 default;
4 j6 U3 j! ]/ W1 C, K& i3 k rewrite ^(.*) http://www.mydomain.com permanent;
: s# o* R E6 u% o }
1 R; j8 N; d8 p' ^- v- g& E! L0 b* m& e5 a1 n. E
按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:# l5 o; T X: I. W0 M# X
8 V) a8 A4 K! p/ ]. \3 H' k
复制代码代码示例:
" w" m+ F, F Gserver {
+ l/ I4 L( U. B listen 80; 6 l4 C& o! N T& m& @! P4 a9 B2 Q
server_name www.example.com example.com 8 u8 O/ f. d4 Y
}
1 B/ h9 v, Z0 d5 I) m# U3 z* R- x
# ?/ B% B! x: Q
7 T, M# @4 `+ O( G L4 T' E1 D$ Q没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:2 W4 W4 w) e( c5 r; k M, s
& e* j" W( U& U9 v [warn]: conflicting server name “example.com” on 0.0.0.0:80,
- @, e/ i$ w% F" E7 E. | ignored
8 m" ?- d: D" N2 M the configuration file /usr/local/Nginx/conf/
F; D9 o8 g, V6 f: G; J Nginx.conf syntax is ok 4 }4 T# [6 L0 ]7 R" |
configuration file /usr/local/Nginx/conf/Nginx.
* [4 ? [- ]* w4 w* n conf test is successful
4 ~: d9 o$ u9 N9 E& L - C7 o [3 n2 [7 i1 f. \
) c# a. R6 T$ i; a最后通过在listen 80 default;后再加server_name _;解决,形式如下:
7 D) |2 [7 ^' j" w3 O/ n2 h& z9 Y# r : Y' @! y5 w# j7 G c! x' {
复制代码代码示例:
% m$ d/ ]9 E5 F/ N6 \* D0 S#禁止IP访问 - j) w4 _! e" |$ P5 r! n
server { , F, f1 z2 P' _# ~
listen 80 default;
/ N* r8 A# k1 h5 Z* R server_name _; ; M* u6 z$ B+ _7 ^. p
server_name www.example.com example.com
" L# G m4 ^5 U5 @% K+ M8 N return 500; ' E! ^: ]+ T/ {: b
} & u* s6 W/ @# L |, T
: E/ r/ r, T1 w( }! p7 q7 l0 [$ P% i/ J
! l' I0 Q. `! P8 k% Y$ g' I
这样,通过example.com就能访问服务器了。
5 {$ Y/ | M6 `- P; t. Q4 y1 F* x4 K/ M8 f! v2 x$ Y/ G6 ` G
以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。
5 |9 k$ t# ?- ]& M7 i |
|