目录

nginx反向代理应用

nginx反向代理应用

一、location的写法

语法:

location[=||*|^~] uri地址 {

……..

……..

}

1、=        精确匹配

2、~        通过正则表达式匹配请求,区分大小写

3、~*        通过正则表达式请求,不区分大小写

4、^~        不以正则表达式匹配请求

非常关键:

优先级:从高到低

=,^,~*

案例:配置错误页面

https://i-blog.csdnimg.cn/direct/72f4fda925664fb99cf5162129d94a9e.png

https://i-blog.csdnimg.cn/direct/5088bd06f41e4a0c9d2a9008934a19f2.png

https://i-blog.csdnimg.cn/direct/3ceb897df42b4dad802865f6c627d330.png

二、http的反向代理

location {

proxy_pass        后端服务器:

}

1、定义location如果明确的写了uri地址,反向代理时也要写具体的uri地址

2、定义location如果使用正则表达式,反向代理时只能写到后端服务器地址结束

案例1:配置nginx将所有请求转交给后端服务器

做反向代理,后端必须有真实的网站服务器存在,将一台机器装上httpd作为网站服务器使用

https://i-blog.csdnimg.cn/direct/d38935fd14c64ea288c30083dac7dafe.png

删除默认的欢迎页面,重新写页面

https://i-blog.csdnimg.cn/direct/8d16a789a49247a9a03242975dabe930.png

确保httpd本身可以访问

https://i-blog.csdnimg.cn/direct/9ea52a5ef72e47748598c439bcd055b5.png

在shell的虚拟主机做配置

https://i-blog.csdnimg.cn/direct/1fe1ba5452d34ccb8dc484a83652092b.png

https://i-blog.csdnimg.cn/direct/0f6f3bceab0441d4a0867ff48f130060.png

https://i-blog.csdnimg.cn/direct/59feb829a86c469683d255f5ec988ffe.png

案例2:将/test1请求转交给后端服务器

现在httpd(后端服务器)上做一个网页,进行访问测试

https://i-blog.csdnimg.cn/direct/9cd3092ccd724b4c8578fa64b3c2600d.png

https://i-blog.csdnimg.cn/direct/5120c683ab12459884f9faf5ecac4015.png

https://i-blog.csdnimg.cn/direct/688c0c07d8fe466daadd778f6dc27b91.png https://i-blog.csdnimg.cn/direct/58270bbe970b40cf8fe536652afd17a6.png

https://i-blog.csdnimg.cn/direct/f535b582ba66493e82f44f4ad3964c32.png

配置后端服务器记录真实客户端地址

1)在请求中添加真实客户端地址的字段

有反向代理的位置一般都需要添加,这里只演示最下方的一个

https://i-blog.csdnimg.cn/direct/1b381684355e4ad4a3b86d5a3834be0b.png

还需要修改httpd配置文件,来获取windows的访问IP

2)修改httpd访问日志格式

https://i-blog.csdnimg.cn/direct/f751b0e6e72647dab9355ba3e9550553.png

https://i-blog.csdnimg.cn/direct/7db12b074c2c47cd9dcb0351ffb54e7a.png

https://i-blog.csdnimg.cn/direct/1c764af91ab347058fcf70a0f71111d0.png

获取的IP就变为了客户端IP

三、upstream模块

作用:

1、将多台web服务器定义为一个upstream组,实现web服务的负载均衡

2、提供对后端服务器健康状态检查

1、调度算法

1、rr        轮询        默认算法

优势:后端的每个服务处理的请求最大数相同,负载均衡效果好

支持为后端服务器设置不同的权重值,避免资源浪费

解决会话session保持/持久的方案:

1)使用noSQL数据库作为会话的共享存储

2)换调度算法

2、ip_hash

一段时间内,可以将同一个客户端的请求转发到后端的同一个服务器上

2、定义upstream组

upstream        组名称 {

[调度算法];

server IP:port        [weight=number] [max_fails=number] [fail_timeout=number]

server IP:port        [weight=number] [max_fails=number] [fail_timeout=number]

server IP:port        [weight=number] [max_fails=number] [fail_timeout=number]

server IP:port        [weight=number] [max_fails=number] [fail_timeout=number] backup

}

backup作用是其他的服务器全部故障,客户端会显示backup服务器,如若web服务器正常,则backup服务器不会显示

不要写在server{ }

location{

proxy_pass http://upstream组名称;

}

案例:基于upstream模块实现web服务器的负载均衡

演示此案例后端至少需要有两个网站服务器

配置shell虚拟主机配置文件

https://i-blog.csdnimg.cn/direct/a987b9b0ffe44f4d8c46db395db99c30.png

https://i-blog.csdnimg.cn/direct/ba9b47d8b9df4eb48af05952cf9271d6.png

https://i-blog.csdnimg.cn/direct/bd3a49e7b4d04ff3b5ef5182b19449c9.png

进行访问点击刷新后端服务器会轮流响应

https://i-blog.csdnimg.cn/direct/4306e1eb396d44118fddd8e776d2918b.png

https://i-blog.csdnimg.cn/direct/db740fde49bb4d05a06c5d16e9f200ab.png

停止一个web服务器,不会影响客户端的正常访问,web01正常访问

https://i-blog.csdnimg.cn/direct/f0014d3a521347d9b6230b70e24fa3c1.png https://i-blog.csdnimg.cn/direct/6588f23b229c4df6b552de390e91adb7.png

全部停止会出现502错误

添加backup服务器

https://i-blog.csdnimg.cn/direct/774129f4921548b589c3ee18c5ae1f67.png

https://i-blog.csdnimg.cn/direct/34838cf6aa05474593425717c764aaba.png backup服务器没有使用虚拟主机直接在主配置文件中配置的,可以使用虚拟主机

https://i-blog.csdnimg.cn/direct/82824c486a2d47b7b2f6e58eeadcfba0.png

https://i-blog.csdnimg.cn/direct/736016460f0a4127943739a2754a2735.png

https://i-blog.csdnimg.cn/direct/7862a97f3d3d4617becb078e4f5cd8c9.png https://i-blog.csdnimg.cn/direct/6eead27ffe024fa7a6c712dfab97f52e.png

https://i-blog.csdnimg.cn/direct/290e6ebd1c0b4bd5b7e3ca22d0b40423.png