找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 187|回复: 0

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

[复制链接]

983

主题

83

回帖

5万

积分

管理员

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

: q9 w4 h" j$ p+ w' S; X+ R. ?/ h有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。0 @4 T5 A5 q. u% j2 v5 _

5 T4 ~7 X, D8 l+ V$ }7 |% J6 qNginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:
+ g9 K3 e8 {4 Y
+ S2 Y$ L- T( b复制代码代码示例:. R9 P9 a4 Y: c* W
listen 80 default; + W! R& q& O1 c& M

% m, ]& v. h4 p- q3 v+ Y" i9 V. b  Z! M0 Z3 X5 p- X
后面的default参数表示这个是默认虚拟主机。2 ?2 ^: V; E! T4 O

( I( l; @$ ^! }; |' ANginx 禁止IP访问这个设置非常有用。! B4 d+ c# u3 ?# D( ]5 b  w& a) x

0 e. c6 N6 ?  i5 p( _, y比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
" a& E6 G6 r4 n. o7 y2 w- Q2 C3 Q3 l/ I- F+ u
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。
& u0 f3 |4 ^, }: n6 @/ h- C+ m: X2 R' j. ?+ {
设置:
- {$ R/ i9 z! D. y* y1 h 2 t* ^5 i/ ?. q. a! v1 F2 y5 u5 @
复制代码代码示例:
/ I: W) X$ a4 Sserver {  
: F! y& `1 V- j; v0 [      listen 80 default;  + l9 y" E5 c* H2 J; h" `4 J8 B
      return 500;  4 K+ h& @$ |: g
   }
6 Z" g6 a- s( d% b4 q5 z  y- t7 @/ H+ i9 _# ^6 W* @" b
也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:
, {9 m+ ]( H$ R3 T 9 ]( p& C6 V# ]
复制代码代码示例:5 z" E5 E2 O+ }* C& Y
server {  
7 ?) ]3 c/ T% ~. [  L% }1 C! A       listen 80 default;  3 |1 x$ {' d8 |: o7 Y2 @
       rewrite ^(.*) http://www.mydomain.com permanent;  ! B4 w6 [4 n* r. m
   }
+ Q" y* G  I# h0 `) k* i0 o$ t5 ^6 P& _2 p2 }% K. [8 d
按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:
0 R8 A" n  `1 O3 |: h( k $ l) g8 _2 j3 u  ~& V8 s$ a6 |$ m
复制代码代码示例:
% d# H% O9 k  \' r' Y6 ?server  {  $ ?) G/ ?# J9 M3 j% v2 c& S
        listen 80;  * O: y. y: @' Y7 y1 S, D7 i3 J
        server_name www.example.com example.com   
7 K; W, }+ i5 Y$ k   }
6 ~; f; Y9 v6 N, h' |
! ]- f: J) W4 Q. T  A, G+ h4 [  s
/ e+ d+ X+ g9 z& O1 q+ S& l9 m没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:' ]+ l& T2 e9 G  G" G; z
6 V' ^& m2 k/ ?0 M. O; ~- h  X
  [warn]: conflicting server name “example.com” on 0.0.0.0:80, - O' Y  o5 H2 p+ `7 T+ z) E" u
      ignored  7 v1 W5 H+ Z6 t
   the configuration file /usr/local/Nginx/conf/' D7 f* o8 ?8 x6 ^
      Nginx.conf syntax is ok  
5 f5 w5 \+ r2 t+ M1 [( i   configuration file /usr/local/Nginx/conf/Nginx.
. f+ E1 o/ Z+ @5 J+ [& v% b6 H      conf test is successful  ^! H* f" u# d) {: I

7 b. s0 x. ]; I
+ e, P( q+ J$ x" C( }最后通过在listen 80 default;后再加server_name _;解决,形式如下:
/ R( N* ?" y- I+ E " e8 g/ E0 O& h9 X
复制代码代码示例:. n: h9 I+ Y# Q7 u4 b7 f. l, P
#禁止IP访问  
+ E# z' R& s; @/ h7 R( r# Qserver  {  
+ O5 e, d* \& b1 G3 k       listen 80 default;  2 h4 l* \1 ^; _) S, M2 `/ Q
       server_name _;  . d/ `3 p0 I! t6 z& J# ~3 K! ?
       server_name www.example.com example.com
* s: }5 R# Q6 B9 ~( x* D# t       return 500;  
8 u9 l6 ]7 O' a; k9 t. \3 J# O} # K; M- q- r0 B" g$ {

2 m7 H1 I) g* L+ D
3 e5 D3 u# D( t* H; h7 e6 z这样,通过example.com就能访问服务器了。
3 H" ]6 h7 y6 A; g0 G( C2 `! n5 f8 L8 j* C6 c' U3 {* g0 q1 p+ U( j
以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。" O+ D5 m& x+ d5 H3 E, ?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|返回首页

GMT+8, 2024-12-23 21:02 , Processed in 0.091661 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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