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

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

[复制链接]
发表于 2023-2-22 15:50:17 | 显示全部楼层 |阅读模式
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。1 \/ q( G8 x/ j' ~3 n1 `& x
& N7 d! X( D" I/ ~; w, f0 ~) N
有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。
: c) N4 D% P  u* s0 `' m- y, Y- E- }( _3 N; u1 ]' J
Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
  X- {. p% \+ \3 ~/ K
% U4 r) z; J8 `& @复制代码代码示例:7 W9 D7 m/ ?; S
listen 80 default;
& w; A$ C0 [- v6 R: o3 ?) g + A3 |0 e& P8 D4 }; W* w& r

9 M, P2 ~8 u2 n- R后面的default参数表示这个是默认虚拟主机。2 \2 o# V* A* x/ R1 K+ B( p
- C; N  q( N6 `- O( A1 O; J$ Y
Nginx 禁止IP访问这个设置非常有用。
$ a& H, u- y$ I' l. D9 L4 b+ s2 D( n8 t  Y
比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
6 \$ l) @1 M: h5 l# \5 }
  M' o1 X% k' R目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。
4 W1 x, O" {  p0 o7 r3 ]1 C* @& [1 ]( e2 |
设置:/ t6 X5 \4 W' ~3 Q! t

7 n4 Q/ h3 K0 \6 C1 I7 s0 ]" @8 {复制代码代码示例:
. [& {- _' M4 F- B0 e% v" Cserver {  
" ]* r* b/ [# W) h/ b5 J( t      listen 80 default;  
$ M# g. Q4 D; H- G# @+ c9 H  F; R      return 500;  
+ g6 M+ O& \; x" k# }) e; f. @/ f, c   }
  r% ]! \8 o' ]. k5 x4 M  G2 |3 b- K! e& N
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:' w7 e& @% E+ @' Y. D/ [
0 w  M% j4 a# u9 v: m9 k
复制代码代码示例:- S/ @! n* ]/ O
server {  * ^! r0 N4 [8 z: k$ D
       listen 80 default;  
8 u  z8 |  k! f7 Z       rewrite ^(.*) http://www.mydomain.com permanent;  , [. M. J* |: {
   }( S9 ~6 f3 z) e& p, F' c+ I

& X) V# n/ L  K! a按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:" M# y3 W) e; u' z) q: ]5 x
- J2 a$ t% V# ~* X# X3 g; q8 i  ~
复制代码代码示例:! ^7 w3 Z( }$ {- l
server  {  
& _  d, x  G) @/ J0 J        listen 80;  
$ N  r9 q6 C7 f+ y        server_name www.example.com example.com    0 @. D& h, j7 X
   }5 Z, t2 U4 {+ y0 I# i9 ^8 Y
4 o9 J- `$ {- D

- j& ]- ]& {% N- c3 R没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:1 ^$ _0 N2 Q  {9 S" Z

: W5 f& p/ U0 p3 d6 v0 U) G  [warn]: conflicting server name “example.com” on 0.0.0.0:80,
$ ~7 J  g/ U$ e2 i  T      ignored  
5 K0 a. O' w2 `3 S   the configuration file /usr/local/Nginx/conf/# O; v5 K6 Z4 B1 t) ?
      Nginx.conf syntax is ok  
0 Z$ V5 A/ s+ y4 E1 l4 r% r   configuration file /usr/local/Nginx/conf/Nginx.
) e4 E5 U, R9 c      conf test is successful" V/ T$ _- t+ e4 P  C" I

* L0 }7 G0 {/ b* S
* V$ `3 K& z3 c7 t" n! V' p最后通过在listen 80 default;后再加server_name _;解决,形式如下:
' ]8 D# K, Q0 ?' p1 u* U
( `; W' V& B% Y1 I& `$ N1 D1 f复制代码代码示例:
% s" c) ^/ x, |! s# L2 K#禁止IP访问  
2 L$ P6 ]$ X& I- r- Eserver  {  / r  _, f0 Y; c: a/ F4 i
       listen 80 default;  
$ x. t& ^+ R, A& u       server_name _;  
/ [/ t: `6 v+ L+ L0 y       server_name www.example.com example.com
$ k$ S6 ?/ ]: [' n       return 500;  
$ q6 }7 G: L; A} , [. q; |" ?9 U) c
7 z' i! _$ A' @% S1 |

. [+ g! y9 C1 @这样,通过example.com就能访问服务器了。
! Z9 N2 @& d# S/ u' z9 l# s9 _/ b7 a& u
1 V5 o/ a( F( W; N3 D- b' F' C0 e以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。/ D% b) w" _( S; ~& r
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-11-3 02:35 AM , Processed in 0.086857 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

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