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

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

[复制链接]

986

主题

92

回帖

5万

积分

管理员

积分
55255
发表于 2023-2-22 15:50:17 | 显示全部楼层 |阅读模式
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。
, }& U4 m- W6 L4 r' m3 K
1 ~# V# v5 _! s: z+ O, K有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。
% M  M4 S: s4 u) J* }8 z3 T) v  ?) A+ s4 I( S6 J3 x
Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:* r6 H) D# }' k0 G8 ?& E

5 O5 g" E* J* e; m0 t复制代码代码示例:
. i/ |+ {1 P8 V* j" Blisten 80 default;
7 k& L; a7 n2 Z
. \+ x4 v. ]  i: S2 S4 s+ _1 C2 j
后面的default参数表示这个是默认虚拟主机。% O; g7 q  M) }2 u

% y/ O% R2 Y7 y2 Z9 sNginx 禁止IP访问这个设置非常有用。
- ^( I! d3 I7 ^2 l1 _- `( [: P
: A# ~( g" o. N: l; u- n. X3 N比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
* [$ L% T5 Y6 ^  G# [3 F( e
6 x/ ~3 W2 a6 `7 C目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。% o+ I) y; N  i% K  {

6 m, o1 h2 O/ ]# C  u5 X- i设置:
5 S, }8 e/ Q- ^4 n. A! E   Y' Y. o% p  W
复制代码代码示例:8 G2 x7 ]: n2 x1 R/ z! o  I
server {  
; r$ C  F' T& E5 O  {      listen 80 default;  - \9 r7 k% x$ x& H1 h
      return 500;  & ~! m# ]( c  g" M& m4 v  R
   }
0 i" L3 k4 O# A: ~6 L/ p* [7 E6 P2 B- {( D7 X2 {
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:; q( b; D* A- p/ `' {

& y4 y2 E- p( w' m& ]& d  j复制代码代码示例:
( d4 f4 k. b0 d! w/ xserver {  
0 ^: F" ^6 c/ B0 p       listen 80 default;  + Z) X  D& E/ H1 I: h: M
       rewrite ^(.*) http://www.mydomain.com permanent;  3 z1 ~, C; f5 s9 P0 @& O
   }
+ |- e3 f* ^: r3 _; H/ O: g$ r& A, n- ^1 s5 H6 G  g3 |0 ^4 f
按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:! k4 j. V& |* A6 V

: }: i+ I! v" l  C; i+ l5 E; ?4 W复制代码代码示例:" q/ U2 D, u! B0 {  \& d  p3 T
server  {  
  h# X' ^5 `2 y8 m5 p, U; @6 O        listen 80;  % I2 X8 g5 ]7 A6 w2 n+ y! H
        server_name www.example.com example.com   
) }. [2 F& R6 {3 A7 b3 z! ^& _$ Z   }
% n: A: X( Z' f& H. [5 S& L+ @, U ) o% [1 m. y& e+ X# B2 a3 A

) O: g5 @/ H1 E2 o" n; s没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:
. H* d, j7 a8 I
. }' n, |" u) ?7 \! o  [warn]: conflicting server name “example.com” on 0.0.0.0:80,
4 ~1 a- G8 y9 t, e' ]      ignored  
8 ]' @; V/ u4 `! e   the configuration file /usr/local/Nginx/conf/; t5 f+ K7 b5 E+ g' h* l
      Nginx.conf syntax is ok  : R- x( U  i% ^* n% s; s; G7 c, T
   configuration file /usr/local/Nginx/conf/Nginx." `* |- R" j  c0 E8 F6 g  w- O& ^+ _
      conf test is successful$ T) T' h2 `; o* M+ z3 I- C+ I

3 e1 a9 u$ D$ Q9 F
; t7 \' U# Q- ?# V最后通过在listen 80 default;后再加server_name _;解决,形式如下:
# s0 i; i! n' P% Z: w8 a
. V4 z! _3 P( Q9 m复制代码代码示例:% W; C* A, ]' ]4 V, {2 F$ Y
#禁止IP访问  ( P/ Q: m% T! r+ [% q" f: e
server  {  6 V, p1 G/ l5 Z! m
       listen 80 default;  , m  h' m. n: K
       server_name _;  + J: v% R: @8 R) j
       server_name www.example.com example.com 8 k: j! G1 {% q, x8 j- Q
       return 500;  
" _1 O) I5 v  p4 }3 [0 P0 ]  r} 4 b  Q: p- t0 c1 E6 s
( H! |. y/ }0 i& i
6 F0 ?$ k1 r- c! l
这样,通过example.com就能访问服务器了。
4 d: n! Y2 h1 S
" |) o: o9 ~6 z; t以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。
4 y: ]$ W/ F1 L) d' o; `0 S
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-3-22 12:01 AM , Processed in 0.090796 second(s), 22 queries .

Powered by xyh-moon X3.5

© 2001-2025 Discuz! Team.

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