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

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

[复制链接]

986

主题

92

回帖

5万

积分

管理员

积分
55255
发表于 2023-2-22 15:50:17 | 显示全部楼层 |阅读模式
介绍下在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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-3-21 10:38 PM , Processed in 0.117054 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2025 Discuz! Team.

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