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

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

[复制链接]

979

主题

90

回帖

5万

积分

管理员

积分
53052
发表于 2023-2-22 15:50:17 | 显示全部楼层 |阅读模式
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。
0 z5 r! P4 b& U2 H4 ]0 i7 [" Z; n/ V/ n, t/ [; m
有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。$ t7 U  N2 W5 {& S; d6 ]
- C  X- P- \0 d8 d7 i4 d/ w
Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
2 Q2 i1 w+ Y: u+ n8 u 2 A; B: j4 @' e/ Q! p2 x5 ]
复制代码代码示例:
% g& W7 a; p. \" Y8 A% Ylisten 80 default; : [' d! ^5 a/ M, Z8 t

, V1 D% z# Z& i  l+ v0 M2 q- {  I$ k/ S+ U
后面的default参数表示这个是默认虚拟主机。) X# f/ P9 D0 W/ b1 x/ z5 z3 Q5 O$ C
* y" n+ f6 q. z7 F0 ^
Nginx 禁止IP访问这个设置非常有用。
$ f# H5 B2 z. D8 V1 {6 F* z) K$ Y/ N, @; S
比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
# d  g. C0 {; k6 M+ @8 e$ a) B5 }" k( p1 F- {$ K, l
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。
$ L- J! u" \$ B( i) i  l8 T+ I' y7 A: D3 n! t$ M' w
设置:
+ |- W6 A+ ]# A; |  J7 U4 o6 L # p" b9 b  A& d) E
复制代码代码示例:- n- J& R2 A8 a1 @% B8 Q
server {  3 G9 T. U( w; T" `1 k4 f0 k+ {& j
      listen 80 default;  
5 P5 O, F& V4 m9 J& M) [      return 500;  
/ G3 o8 |- }& x9 i   }7 r7 ]: a/ G2 `' i, G5 V

% V9 l" [2 n0 o: L也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:
% i$ p8 [- J$ I' G% g$ t 2 |% b+ }' w5 B5 R) f; \( z9 m
复制代码代码示例:; `7 M* l5 l( X, C, y) _
server {  
/ A! a0 \3 t$ H7 v$ B8 o. m       listen 80 default;  2 r$ Z8 n# C* p
       rewrite ^(.*) http://www.mydomain.com permanent;  3 q. o9 h3 Q) S2 o9 B" F9 P$ M) h, w( j
   }
' L% N. `% H/ O# q
+ M: L( u4 {. d* |/ |6 \# q+ d3 U5 [按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:
+ B( K  v  E5 c! I& g# p3 g: Y* V & B- J" |; l# c% [
复制代码代码示例:4 x8 |/ h' x6 y; y
server  {  
  F* }+ ~- m( ~  _. B- v( b        listen 80;  
% z/ w9 [8 g# j, g  E        server_name www.example.com example.com    3 k/ b* [8 I8 }9 B& I& x( I
   }
# L: L& ^' L8 w3 t9 q$ T , h- ^% ^8 a/ k

9 U) ?; i: u: r% ]) |3 g没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:$ [4 \! k8 k4 u
/ n+ o9 W% d& ~8 ^5 d
  [warn]: conflicting server name “example.com” on 0.0.0.0:80, 3 {/ U5 u1 u( r5 v4 |
      ignored  # a: p) R" n3 D
   the configuration file /usr/local/Nginx/conf/1 V' K& q1 N7 @- g6 ?; o; `5 ?
      Nginx.conf syntax is ok  
! A7 n/ x9 F% C, |% {8 Y9 R. ^- X& y& S   configuration file /usr/local/Nginx/conf/Nginx.
) [& z8 C+ \7 w, _8 W) }      conf test is successful! X4 l' @8 G/ A3 c% [
, c. q6 ?3 ?' L  d# ~3 Z7 C

- c$ V9 e8 r& P- b- g9 u最后通过在listen 80 default;后再加server_name _;解决,形式如下:3 w# @; W  H( ^. V: z% ?
9 s7 P+ K8 o1 i/ ~7 E2 V. N
复制代码代码示例:
0 V- B9 d1 }6 \* u& n/ ?$ B#禁止IP访问  
; |& G8 F+ g% V- W, d0 h: pserver  {  
" d  o' N# ?. g' x. R* o       listen 80 default;  
) Q. q' {( p  c5 U       server_name _;  
3 K& ~! V: f, g: k4 M* T8 H       server_name www.example.com example.com
% K; e: P5 z2 e( }& R9 j       return 500;  ! `- J1 Z( A9 R9 L, N; ?
} ' |: s' _7 Q& q0 F  A
- f9 }5 z. R4 e' Q5 Z9 L# ~

- z( H: h6 b0 l, w: ~这样,通过example.com就能访问服务器了。' n5 `% D2 f4 {0 L' @, [" H- S
9 D' Q) }2 e& a4 k+ e( d) \2 T2 M
以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。6 D, G  H/ M% N! O8 ]9 D
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2025-2-25 00:31 , Processed in 0.094721 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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