找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 188|回复: 0

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

[复制链接]

983

主题

83

回帖

5万

积分

管理员

积分
53122
发表于 2023-2-22 15:50:17 | 显示全部楼层 |阅读模式
介绍下在nginx服务器禁止直接通过IP地址访问网站的方法,以避免别人恶意指向自己的IP,有需要的朋友参考下。- c: s$ N, z8 ?: D3 Z+ H! b
7 c) |' p- ^: y
有时会遇到很多的恶意IP攻击,在Nginx下可以禁止IP访问。& j* X4 k+ r6 h3 z
5 ]/ y- \9 e% Y$ P# L- O
Nginx的默认虚拟主机在用户通过IP访问,或通过未设置的域名访问,在server的设置里面添加这一行:7 c- g# a: U" h. t3 Z% q
, y5 v$ q# {' p* h5 X
复制代码代码示例:
) w( v7 v4 o5 E! R  j% N5 ulisten 80 default; ' r2 ~; p6 g( j, m4 N. }$ G
6 ]+ h( e( ^1 n
6 [" `4 h8 F% M  b; V
后面的default参数表示这个是默认虚拟主机。
# {( H0 p  i- e$ `# ?
! K" h9 U6 q& P0 ~. O* a( NNginx 禁止IP访问这个设置非常有用。0 [7 z+ ^8 O, `$ s# I8 P
: N9 Z: v. I6 Q6 G8 u
比如别人通过ip或者未知域名访问你的网站时,希望禁止显示任何有效内容,可以给他返回500。
0 M3 e* H; ?, ]# V: b6 n( A* P" [5 o
目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。( [' e$ F7 S% f
/ B4 P" o# x2 ~& Z% B
设置:( L0 X# z& ?7 _

( O! G3 U' w: R复制代码代码示例:0 u4 ]# G: g% z" I' d! S4 h
server {  
& W! n! m7 Q" O      listen 80 default;  9 |; |9 J7 Q; r) R; B0 O2 m2 Z
      return 500;  ) w/ g( F* I: ]2 Q; V
   }
4 p$ A; W" [) v/ k# v
( u3 l. g  {) e7 X! V0 |也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置:- u8 n* Y7 v! `! ^# @. `/ f8 P
2 @1 {. y- U  Y% ~# g' l% q% n
复制代码代码示例:
0 A# F$ a2 [3 y; Fserver {  
( v8 `: `$ r' I. ]! ]       listen 80 default;  
' @* G6 {0 K+ ^9 z       rewrite ^(.*) http://www.mydomain.com permanent;  * a3 U# f) o$ _1 n0 {# a: b& e
   }. T2 w* V; }- z: e1 R: e
* q8 _% ~0 B% v! T3 j# e$ s
按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问,设置如下:
' C" k, r% I3 q. U; w
* B0 t8 k( T7 L% b( o复制代码代码示例:/ U1 u  t3 D# D1 V( v3 ?" E' j
server  {  6 Z4 k! j1 U- U2 c, Y, t
        listen 80;  
+ }5 X5 k* P# t7 @8 F        server_name www.example.com example.com   
/ k7 w! B( g* T4 u   }
& N, ^0 _$ n( X( ^1 @3 W( H # W: Q& W( X; C

" B  `& y. Q: d* D8 ^9 M没更改之前,通过server_name 中的www.example.com example.com均可访问服务器,加入Nginx 禁止IP访问的设置后,通过example.com无法访问服务器了,www.example.com可以访问,用 Nginx -t 检测配置文件会提示warning:
5 D7 _7 s% ~: d; y; l
! L3 R" E: Z' V0 c; s  [warn]: conflicting server name “example.com” on 0.0.0.0:80, : S$ x( x  P! [; `# z. a' L
      ignored  
% D/ A2 Q0 B7 u5 t3 L; }! G   the configuration file /usr/local/Nginx/conf/
% W; ^- ~+ c; H3 o. g  q1 t$ ~8 s6 l      Nginx.conf syntax is ok  
8 \9 w$ T2 d2 C3 }- M   configuration file /usr/local/Nginx/conf/Nginx.
) e, U/ @1 N5 \7 K0 E      conf test is successful
* C5 q$ {/ z; h6 j* S
. a3 ^; O6 Y/ P, Z# ]  ]+ z- r' Q3 T+ a0 c/ p5 v# K$ e
最后通过在listen 80 default;后再加server_name _;解决,形式如下:
  X) q' p& D$ r: o5 _4 D
9 O0 w, P1 j. N$ L" m复制代码代码示例:
' R0 f  y5 y; T#禁止IP访问  2 U: l: ^% K/ P) M. \
server  {  0 k& [) d/ }* b* n+ {/ Q6 z
       listen 80 default;  1 l' I9 E) X; H/ ?% S
       server_name _;  
' H3 y+ N! A3 ~- F& K6 o5 o       server_name www.example.com example.com
+ B5 o$ Z  c* Q# Q       return 500;  9 ^1 d; Z1 A5 X
} ! a) }2 x8 R# A
( H# S3 R( H& P. R

: _9 z1 I; `( V  A% z5 c% D这样,通过example.com就能访问服务器了。
6 ~# w" f; X/ U
2 s- K% U% m, ]4 z: X$ q以上介绍了nginx服务器中直接通过IP地址访问网站的方法,希望对大家有所帮助。8 L+ Z+ A. F; }8 `2 L  N
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 21:04 , Processed in 0.077602 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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