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

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

[复制链接]
发表于 2023-2-22 15:50:17 | 显示全部楼层 |阅读模式
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。
  B/ W' G  _4 m& E& Q/ l" h1 O
& x/ S" I. R# E# g% l4 F% z  S9 U有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。) L8 \# t, a; J; p6 R  s

" v  L5 ?/ _- d* [- I3 w3 m) w$ L" GNginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:9 `5 ^4 |% ]6 P
1 a$ M6 ?# @4 S
复制代码代码示例:) M0 p, K7 k- _
listen 80 default;
! L7 z$ N: |1 {" _9 P   D* T# @7 c! M& V0 e

2 Z1 P& w8 S8 ~0 K6 g8 i0 p后面的default参数表示这个是默认虚拟主机。
& U0 e8 t. c- b2 [
; _) ^5 `( K2 p7 _Nginx 禁止IP访问这个设置非常有用。
4 e. A4 H" X; O4 k
, b: Q5 W$ ?" J' A& W. g比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。1 }- R4 D1 ~  c9 B+ K2 b" G+ C

; V, L# n0 V* |3 o( |, L目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。# v' K- g# E5 F5 z, n  g& C

  _! F2 V& C/ Q+ t( X+ p设置:
' M3 r+ r. ^( N$ r# o' s7 L% p
4 ?/ y, p" |0 K" ^; _/ E复制代码代码示例:
% B9 M; Q0 ~1 ~- Y* \. K5 w- Z- wserver {  ! I- r) \" g0 M% U: ]+ U
      listen 80 default;  8 O# D$ v. ]8 D% k1 }  w
      return 500;  
4 a% V- |  U$ V$ }* x9 e- k: F  B   }7 ?2 Q* E* _/ F: z

8 G  k, `$ s: X4 e' v7 B# e9 {也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:7 W+ |3 O4 g$ u( N
# G8 [6 |; r4 [) q
复制代码代码示例:
/ p% m) @) F$ a2 m' P5 userver {  
/ g3 a3 G6 K, D       listen 80 default;  
) ^: A9 f# c4 p, Q       rewrite ^(.*) http://www.mydomain.com permanent;  / o9 @  F$ O6 D
   }
& H% A/ y- h7 g1 k. f# \6 H* Z( V/ U4 {; }; S
按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:& X3 W6 o1 c; x+ Q: w1 t
% O3 \( t2 @( w$ t5 ?1 C; m
复制代码代码示例:2 f) k$ K- q. e1 u
server  {  
. H' g7 H% p8 `! v! Q        listen 80;  - X, W3 l) X$ a' Q
        server_name www.example.com example.com    + X3 c- j, t3 i) z' r. D
   }5 Q2 u. Q" e1 O% p! d% ~  W. }: C

) y% {: I/ M+ _6 ]- ]( I4 R. V$ m1 B+ I; z5 H3 _
没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:) W( e+ W: K- \4 y& r
7 S8 k2 y6 h: L3 M
  [warn]: conflicting server name “example.com” on 0.0.0.0:80, / j! Z; N% L4 L4 m' L
      ignored  , w& O7 t6 s& x
   the configuration file /usr/local/Nginx/conf/
: r* _( ~- |$ I, ^! c/ t      Nginx.conf syntax is ok  : e, T% _/ V4 h! d# j  |: F  z; N, c
   configuration file /usr/local/Nginx/conf/Nginx.. K6 t% R+ i  r) \" g* Z% M
      conf test is successful/ V. H/ S9 w# k" r
; V3 g. @, c, {
, v8 W1 ~: _0 g3 t) T& P- }
最后通过在listen 80 default;后再加server_name _;解决,形式如下:
" _! M4 J. U6 I( z$ v& Z " L7 u( Y) S7 k3 u9 b+ M
复制代码代码示例:" @( t3 g5 R+ W' F* L
#禁止IP访问  # \1 `3 T3 p/ |. a3 V! u
server  {  
3 N# W/ R0 D! I+ R+ l' e       listen 80 default;  
( \: ?, ^9 G6 l4 P       server_name _;  " I  r" g' ?. p; j) K7 c; U
       server_name www.example.com example.com
) x; Q' ?- A* a0 Z" T! A  G       return 500;  
+ W% q: w+ ?1 a* Y6 N} 2 J7 l! H4 W8 ~) [

2 M+ I' |/ M+ I  M+ V. E" D' Z6 v4 @6 X: Q7 L
这样,通过example.com就能访问服务器了。% l- j) y4 `1 d! @. G; _' d

% s, L, B+ ]0 f1 V以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。
+ H1 r  x! a2 u5 i0 C: @0 K% g
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-11-3 12:32 AM , Processed in 0.096044 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

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