当前位置: 首页 > article >正文

Nginx反向代理-2-根据URL中的目录地址实现代理转发

特别申明:内容出自《跟老男孩学Linux:Web集群实战》

文章目录

  • 案例背景
  • Nginx代理服务器的配置
  • 根据URL目录地址转发的应用场景
  • 参考文献

案例背景

  通过Nginx实现动静分离,即通过Nginx反向代理配置规则实现让动态资源和静态资源及其他业务分别由不同的服务器解析,以解决网站性能、安全、用户体验等重要问题。

  此架构图适合网站前端只使用同一个域名提供服务的场景,例如,用户访问的域名是www.etiantian.org,然后,当用户请求www.etiantian.org/upload/xx地址的时候,代理会分配请求到上传服务器池处理数据;当用户请求www.etiantian.org/static/xx地址的时候,代理会分配请求到静态服务器池请求数据;当用户请求www.etiantian.org/xx地址的时候,即不包含上述指定的目录地址路径时,代理会分配请求到默认的动态服务器池请求数据(注意:上面的xx表示任意路径)。

在这里插入图片描述

动静分离网站集群架构

Nginx反向代理配置,
参考 Nginx反向代理-1-实践简单的负载均衡[DB|OL]. https://blog.csdn.net/zhou16333/article/details/98094467#4_160

Nginx代理服务器的配置

方案一:以location实现

[root@lb01 ~]# cat /application/nginx/conf/nginx.conf
worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        off;keepalive_timeout  65;upstream static_pools{server  192.168.55.9:80     weight=1;}upstream upload_pools{server  192.168.55.10:80     weight=1;}upstream default_pools{server  192.168.55.11:80     weight=1;}server {listen          80;server_name     www.etiantian.org;location / {proxy_pass http://default_pools;include    proxy.conf;}location /static/ {proxy_pass http://static_pools;include    proxy.conf;}location /upload {proxy_pass http://upload_pools;include    proxy.conf;}}
}

方案二:以if语句实现

if ($request_uri ~* "^/static/(.*)$")
{proxy_pass  http://static_pools/$1;
}
if ($request_uri ~* "^/upload/(.*)$")
{proxy_pass  http://upload_pools/$1;
}
location / {proxy_pass  http://default_pools;include     proxy.conf;
}

重新加载配置生效

# /application/nginx/sbin/nginx -t
# /application/nginx/sbin/nginx -s reload

  暂时不要立刻测试成果,为了实现上述代理的测试,还需要在web01和web02上做节点的测试配置,才能更好地展示测试效果。

  以web01作为static静态服务,地址端口为:192.168.55.9:80,需事先配置一个用于测试静态的地址页面,并测试访问,确定它会返回正确结果。操作步骤如下:

[root@web01 ~]# cd /application/nginx/html/www/
[root@web01 www]# mkdir static
[root@web01 www]# echo static_pools >static/index.html
[root@web01 www]# curl http://www.etiantian.org/static/index.html <==这里的www.etiantian.org是解析过web01本地IP。
static_pools

  提示:测试的静态地址为http://www.etiantian.org/static/index.html,注意,是带static路径的地址。

  以web02作为upload上传服务,地址端口为192.168.55.10:80,需事先配置一个用于测试上传服务的地址页面,并测试访问,确定它会返回正确结果。操作步骤如下:

[root@web02 ~]# cd /application/nginx/html/www/
[root@web02 www]# mkdir upload
[root@web02 www]# echo upload_pools >upload/index.html
[root@web02 www]# curl http:// www.etiantian.org/upload/index.html  #<==这里的www.etiantian.org是解析过web01本地IP的。
upload_pools

  提示:测试的上传地址为http://www.etiantian.org/upload/index.html,注意,是带upload路径的地址。

  以web03作为动态服务节点,地址端口为192.168.55.11:80,同样需事先配置一个默认的地址页面,并测试访问,确定它会返回正确结果。操作步骤如下:

[root@web03 ~]# cd /application/nginx/html/www/
[root@web03 www]# echo default_pools >index.html
[root@web03 www]# curl http:// www.etiantian.org  #<==这里的www.etiantian.org是解析过web01本地IP的。
default_pools

  以上准备了三台Web节点服务器,分别加入到了upstream定义的不同服务器池,代表三组不同的业务集群组,从本机通过hosts解析各自的域名,然后测试访问,其地址与实际访问的内容输出请对照表。

节点IP及端口测试地址字符串为代表业务
web01192.168.55.8http://www.etiantian.org/static/index.htmlstatic_pools
web02192.168.55.9http://www.etiantian.org/upload/index.htmlupload_pools
web03192.168.55.10http://www.etiantian.org/index.html
http://www.etiantian.org
default_pools

根据URL目录地址转发的应用场景

根据HTTP的URL进行转发的应用情况,被称为第7层(应用层)的负载均衡,而LVS的负载均衡一般用于TCP等的转发,因此被称为第4层(传输层)的负载均衡。
在企业中,有时希望只用一个域名对外提供服务,不希望使用多个域名对应同一个产品业务,此时就需要在代理服务器上通过配置规则,使得匹配不同规则的请求会交给不同的服务器池处理。这类业务有:

  • 业务的域名没有拆分或者不希望拆分,但希望实现动静分离、多业务分离,这在前面已经讲解过案例了。
  • 不同的客户端设备(例如:手机和PC端)使用同一个域名访问同一个业务网站,就需要根据规则将不同设备的用户请求交给后端不同的服务器处理,以便得到最佳用户体验。这也是非常重要的,接下来就讲解相关案例。

参考文献

[1] 老男孩. 跟老男孩学Linux:Web集群实战[M]. 机械工业出版社,2016-03-01.

http://www.lryc.cn/news/2418392.html

相关文章:

  • HTC Desire G7刷机
  • 个人博客网站搭建教程
  • IP地址、子网掩码、网络号、主机号、网络地址、主机地址、IP段/数字
  • Linux内存布局详解
  • 少儿编程Scratch第一课:欢迎来到Scratch世界!
  • ../../..xxx.go:46:18: aa.Bbb undefined (type *xx/xxx/xx.Ccc has no field or method Bbb)
  • 在线超级外链发布工具
  • 阻抗匹配
  • 当前目录下有一个文件名为 class_score.txt 的文本文件,存放着某班学生的学号、数学课成绩(第 2 列)和语文课成绩(第 3 列)。请编程完成下列要求。
  • 仙侣情缘之麒麟劫java_《仙侣情缘之麒麟劫》最终支线攻略
  • 分享github好用的磁力站bt导航和阿里云盘导航、百度网盘搜索引擎导航
  • VC2008移动头文件未重建
  • signature=da0cbfb45ebebe4ea0118c0a20df185e,MS15-018:Internet Explorer 累积安全更新:2015 年 3 月 10 日...
  • 系统因缺少MSVCIRT.DLL文件导致程序异常的解决办法
  • 杀毒软件工作原理 及 现在主要杀毒技术
  • 2021爱智先行者—软件入门及远程控制开关灯
  • ci service 和catalog.wci是什么?
  • 适用ios,android,wp等平台手机emoji表情符号兼容方案
  • android女孩名字的由来,诗经中的女孩灵动名字 寓意深刻而又唯美
  • Java Bean详解
  • opencv Mat数据 乘以系数
  • 爱色影音播放器免费版
  • php卡盟主站_《卡盟源码秒卡购》运营级别卡盟系统源码支持API站对接站[带有SUP+商户+支持秒搭建主站]...
  • CC软件的一些实用技巧
  • 小明医声发布,看AI技术秀得飞起
  • colab使用步骤
  • 【微信小程序】从零开始搭建微信小程序项目
  • 云联惠认证时间_2019年4月份了,云联惠目前是什么情况?大家报案了吗?
  • 中国雅虎首页改版彻底与口碑网剥离
  • 虚幻引擎[真实字幕组]开始公开招募!这太真实了!