找回密码
 立即注册
搜索
查看: 329|回复: 0

Nginx禁止直接通过IP地址访问网站

[复制链接]

991

主题

92

回帖

5万

积分

管理员

积分
55457
发表于 2023-2-22 15:50:17 | 显示全部楼层 |阅读模式
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。4 @7 F/ O! P  b1 [, O2 ]% v  [
3 W/ r' s4 {- d: d
有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。, o: S" K8 V. ~2 {8 T

. ]$ f' m# `7 F% @7 |; {- xNginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
' }7 t8 z5 h" p& a6 j * W8 ]5 I' t& @/ y& r, i6 s9 J
复制代码代码示例:: x) _# n1 N7 i  p8 d
listen 80 default;
; q8 I: W1 t* x( a 3 P, @1 Q' c& r: ^% k- F- h+ e( k

# e5 f' j" l5 s% F% ~+ l% z后面的default参数表示这个是默认虚拟主机。
  s6 x8 F0 ?3 N3 f2 k3 q& b5 j) _' ~: Z4 M
Nginx 禁止IP访问这个设置非常有用。
! d. d: A: U, k5 R0 H3 Q; a
5 b# W6 C/ C* `5 _: I比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
$ [( M  |2 |4 c" j0 }
0 M9 n7 }$ s" J1 I! H& \+ [目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。
- s* k! B  n+ [, B, r/ G" D: a8 B0 y% Z8 w
设置:8 r9 G' Y& ?3 V. H

" O) G3 a% C, S; b# X复制代码代码示例:* X" J7 k9 g- ~7 J
server {  / I# ]+ B$ S: v
      listen 80 default;  
/ v  F. E" ]8 F/ l# o" r. r- S2 I      return 500;  
8 ?& s  p) }8 b   }; V+ t* l$ l% j' E" Q5 h+ f8 \$ n
1 J& X& i( p$ r9 j. U: V. S
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:% ?' f; ?8 {" x3 e- ~$ E4 r

7 }8 ~( l9 S' i3 V复制代码代码示例:
: N( B9 R9 {  |. f" S6 cserver {  
) _+ ?1 H( \1 M3 X1 s9 v3 Z       listen 80 default;  
: g9 o. k4 }5 s) h       rewrite ^(.*) http://www.mydomain.com permanent;  ' h& _- a3 h/ i! e5 H
   }
3 r5 ^( }+ o( W$ \: i2 _
( D5 Q3 \6 x+ ?1 J6 p: {" g& T6 o按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:
) \) m0 V) q7 I7 s 7 N: Y# W2 M4 U$ M- N& Z
复制代码代码示例:2 O8 h& {( C# V! n, Q
server  {  ; q. D) q& K" k3 \$ l6 \- X
        listen 80;  5 I, W% c2 M* J2 @! y7 h9 p
        server_name www.example.com example.com    * k9 ?6 X, F; I1 r
   }
( e6 S" d; J! V$ w7 {
+ d$ T, R8 h& ~1 s) U/ _& P; u; m  x  N# i9 j. b* ?$ d
没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:3 t/ W3 {: b7 Z6 s3 I6 k

; x5 ]& X' I% k. @, d; [. F' G  [warn]: conflicting server name “example.com” on 0.0.0.0:80, 5 s  q9 O: h* G: j
      ignored  2 W5 |" {3 V9 \4 K. N' O
   the configuration file /usr/local/Nginx/conf/
3 c: Q7 ^  F, V& ~+ T" N3 y) c      Nginx.conf syntax is ok  7 S7 F  G" K. h
   configuration file /usr/local/Nginx/conf/Nginx.+ K) \$ ?. d' k/ D7 H! Y
      conf test is successful
8 ^$ r5 |4 k0 d$ p
  }" B4 D; x6 b7 T$ S5 J
) R7 G8 Q2 O& ?$ A' s最后通过在listen 80 default;后再加server_name _;解决,形式如下:
; e. q  v" V( {8 x. ^
2 g$ U2 x3 i6 d复制代码代码示例:
0 B7 @9 x& K& q# R" p; J#禁止IP访问  2 ]: i$ l, ], J- B! X; ?! G
server  {  % h: N7 R6 p8 y0 {, N* D* b
       listen 80 default;  
8 Q* F! d2 h" W, B* a6 G       server_name _;  
6 \/ I. M+ J  q% d5 X6 X2 @       server_name www.example.com example.com 6 e6 n4 Y: [1 Q) H  z; p$ ?
       return 500;  % U% e; i: }0 y" k
} 9 U. S6 O+ v* o! J0 U! O, c7 T3 i

; P, ?; n# W4 M, Q
: F; ?" y2 o! f这样,通过example.com就能访问服务器了。, B5 Q4 P6 H8 z( P/ `2 U+ c" }
$ r1 y( m/ y+ z
以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。. k3 e* Y6 m$ h% b0 S9 H
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-8-5 11:29 AM , Processed in 0.142704 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表