|
|
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。
) Q! x3 E6 _8 m3 M/ A/ I$ ]: @) @' H. n# v" |2 q" R8 Q9 ~
有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。
# G, d/ F' w' \. u* m0 a
6 `/ j( P' c- p) e9 j5 g: bNginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
4 `; z: g% b8 c& i+ x& n
5 ^( Z u% y+ e# p/ r复制代码代码示例:6 ?* l, {% y' t( m0 v4 `2 ?4 C% D
listen 80 default; 7 Q% F: g, ^/ w& l: S# }/ y
p: }7 X( i0 O) c% d/ }6 K
$ W8 i" X- ^! U$ E: F- Z' F$ p) C
后面的default参数表示这个是默认虚拟主机。
8 q% t5 s! J& o8 J
, [/ H2 A: Y7 F% j9 BNginx 禁止IP访问这个设置非常有用。
' S' B) Y' A( @+ F7 `
! N( |5 |7 x# n* b* T比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
$ d6 o0 Y2 x! n3 \$ N- y% ^ f# L) P1 S; i& L# |6 a
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。0 p# A* N* i, o% _1 F
8 j* w* V5 {( Z/ X' V* ?& g" K( o设置:
- l7 j6 w; @6 [$ w! J 6 H7 [; o* j% o' @9 J" I* ] I5 W
复制代码代码示例:
1 `+ q8 _- Y% _+ f8 Bserver {
+ O/ {" B) N4 s, V$ M/ i listen 80 default; , C+ o0 s# ~; \1 V) {' H5 O
return 500; . U g+ R9 |1 o$ S! V
}- u6 P, _/ [9 U3 U6 p/ t
/ @7 y- |+ K7 ^2 `3 v+ t5 x& s: ]也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:; I5 L( [( K4 o9 W5 `
; @* S ?5 P# g% Z+ Y复制代码代码示例:
( u* V4 e7 j/ L6 v# Fserver { & |) ~; m& F2 l- \; n2 i
listen 80 default;
6 Q: J+ U7 Y1 R! t) ~1 G+ u2 w6 i rewrite ^(.*) http://www.mydomain.com permanent; 0 ~& C: T) V- J
}
1 h! I' Q Z; X9 u% Q( y1 E
$ f) b* R" F# }# A/ N& ^" ]1 Y0 x0 ?按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下: F- z3 O2 `; W2 L) N: t/ E" [3 U
; G0 i) p6 _2 B) c, @- u4 ^复制代码代码示例:
! u. M& F! S" T0 w) O% Mserver { 7 `/ `4 ]+ R) r0 R! V3 b
listen 80; ( C( ^! r% f% P, E+ W& O6 w
server_name www.example.com example.com + `* }2 \, l; @$ z
}4 z' |7 Y$ C. ?. D
* W0 a7 l8 w) D3 E& @# l# W3 I7 o
9 E$ t( G0 m# s! Q/ c8 h) x8 A没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:) n1 K" v4 O! q# ]7 K* A9 j
' p" q) O+ _4 `4 J. `( F5 a9 l [warn]: conflicting server name “example.com” on 0.0.0.0:80, 5 v( J" y3 D& N. l c$ U7 b
ignored
: L% ^+ ~3 n6 t( S+ e( g the configuration file /usr/local/Nginx/conf/' V# {0 @1 { R6 S+ [- M3 d: r
Nginx.conf syntax is ok , `2 O" s! N3 d, d# v Z
configuration file /usr/local/Nginx/conf/Nginx.( C$ o* i( J5 A; A
conf test is successful H) T: g2 ]" a+ L
/ O: V& d9 I/ R+ M: B3 p4 j5 G$ O! z5 `- u& C0 X1 u. R
最后通过在listen 80 default;后再加server_name _;解决,形式如下: a, a+ b9 e: U
9 M* j) I: n5 @ M q
复制代码代码示例:- K+ F& T# w1 E' |
#禁止IP访问
* V5 e7 ~2 F- T5 C8 K7 w* Kserver {
8 w5 {# s4 _; h' ?, V# h8 A listen 80 default; 7 m9 s6 `% ^' E W* b& E
server_name _; 2 u6 K' L4 g R. S8 {& X
server_name www.example.com example.com # |& u( Z. Z( M
return 500;
* F9 T, E7 `# z8 r; q} 3 u7 s2 P0 q9 ]
2 f; M) f3 c8 ^& o
1 V/ x' {9 a9 u) P0 V这样,通过example.com就能访问服务器了。
- Y5 V3 F% S$ G, `- F+ ~; x4 j4 N4 q1 C$ R& t- v. D
以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。
5 O: q3 p$ _9 S0 B7 T( V |
|