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

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

[复制链接]

989

主题

92

回帖

5万

积分

管理员

积分
55362
发表于 2023-2-22 15:50:17 | 显示全部楼层 |阅读模式
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。# W# X9 b! d2 X0 Z  U

7 Y+ i2 ]% Q- u& m- E有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。  K' t' u$ n; O1 x2 E2 A+ k
9 F$ g. v0 ]% p. c8 j4 ^3 B* \# j, q
Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
- H& I2 M2 `+ C& `
5 P. t+ k2 L1 }( P复制代码代码示例:& `' Z* b9 @0 p4 a! o
listen 80 default; , ^( I3 {, r" [1 V& ^' W' X# O

) F& G8 e4 C9 \5 [! P3 n5 `$ ?, P4 K4 _6 a% m! S5 o3 [0 k6 D
后面的default参数表示这个是默认虚拟主机。
- o- T# L  J) I
" Z" m. L- M+ i+ W& T8 oNginx 禁止IP访问这个设置非常有用。
. J' o& t  C9 Y  v$ @3 s/ {) v% a/ ^; T/ @5 A3 z
比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。+ t& u& t) B3 ^5 E
  {* N% }. M, ?" D
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。/ ^% _; t8 V7 y) J7 O6 f6 E' ~
0 ]6 D3 y/ Y/ ]1 U. z
设置:6 X! v6 w4 B& ]. A2 J" A# @

& J5 @2 |2 D3 ]+ c复制代码代码示例:
7 ^7 ^1 c. r2 b& H2 zserver {  ( I, d$ i3 \6 i5 o3 l* x
      listen 80 default;  5 U9 K) u! A8 D% n
      return 500;  
, |3 l4 x2 G. l5 \5 J( a( D   }
/ m+ T% n2 ]* s6 t5 I% \  j  v+ h- x( Z
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:; G4 U3 H$ o" b+ h% m& W  _

8 b# @2 I! `, z复制代码代码示例:
, c2 Q) l$ q# \$ Mserver {  
9 w5 _; U2 Y& {. p. \: d. F* u       listen 80 default;  . V) n1 N) {# p; R0 o: A1 x
       rewrite ^(.*) http://www.mydomain.com permanent;  
" D1 ?+ E0 l: O2 C2 a; S) P! q  C   }" T, f- h0 D, N

5 t7 C" a9 o/ {, Q* d4 C/ J按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:
6 K. e2 {0 }5 q) U% {
! P) Y" {/ d8 Y" v; N* W! I: g复制代码代码示例:
% Z2 a" G: J- {/ ]4 ~3 |server  {  2 I: C7 |5 v& p' U% Y: e
        listen 80;  3 r: ]  Q+ ]' y7 C  U. f
        server_name www.example.com example.com   
- o$ ]6 v3 n# z1 z   }
: N. k+ M- I1 {1 e1 e 6 d- |. ]' L4 g" U) T, k# j

8 y  J( D1 R5 @" Z# {没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:
+ |7 l% z7 }, F
: B+ _+ @5 {0 B: p/ o  [warn]: conflicting server name “example.com” on 0.0.0.0:80, " G, S! @" I! P  h/ Y
      ignored  / e/ r% n% D' b2 b# ~2 W! l
   the configuration file /usr/local/Nginx/conf/
& {5 p* H) g" r- I      Nginx.conf syntax is ok  
3 p) P8 b. V$ S* F3 A7 d& L   configuration file /usr/local/Nginx/conf/Nginx.
( S2 Y" {2 N1 }8 G$ h& e( L      conf test is successful9 a9 y7 S* l7 T, F
0 g( p& Z8 }, O3 D

* t' d9 T" g- m! F. B最后通过在listen 80 default;后再加server_name _;解决,形式如下:' i: q! X2 h0 t, J9 z/ d: q

+ G+ F, @, c, N! a& J6 r! s复制代码代码示例:  H2 a0 ~* W% V0 F! `/ b# L
#禁止IP访问  
6 l% h5 m  U" x; S$ N6 [server  {  
/ D+ p7 v" u. F1 u* @6 `       listen 80 default;  
. X' N4 ]2 k2 b, Z       server_name _;  
3 S3 b( X4 Y1 B- g9 A, m       server_name www.example.com example.com
8 Z: }3 a/ l( a7 Z0 `6 ?' \8 k       return 500;  6 _9 k  E( V1 |. b3 _$ x! n; x, ^
}
$ ]/ O7 W$ b. } & I' W5 J, J8 \

& p0 Y  A. M) V7 U4 z这样,通过example.com就能访问服务器了。) d: M' `7 Q& T- T" F0 b" E

9 d# h( u0 [% q4 m. T/ F  [以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。! k. f. W' Z) i" a
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-5-6 01:16 PM , Processed in 0.111716 second(s), 22 queries .

Powered by xyh-moon X3.5

© 2001-2025 Discuz! Team.

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