Nginx 反向代理根据客户端的设备(user_agent)转发 -- 案例实战
前言
本环境是基于 Centos 7.8 系统构建Nginx学习环境
具体构建,请参考 Nginx-1.18.0 环境部署
环境准备
role | host | ip | nginx-version | OS |
---|---|---|---|---|
nginx proxy host | node01 | 192.168.5.11 | Nginx-1.18.0 | Centos 7.8 |
nginx web server1 | node02 | 192.168.5.12 | Nginx-1.18.0 | Centos 7.8 |
nginx web server2 | node03 | 192.168.5.13 | Nginx-1.18.0 | Centos 7.8 |
nginx web server3 | node04 | 192.168.5.14 | Nginx-1.18.0 | Centos 7.8 |
nginx client1 | node05 | 192.168.5.15 | ---- | Centos 7.8 |
nginx client2 | windows 7 Ultimate. | 192.168.5.7 | ---- | windows 7 Ultimate. |
配置后端 web服务
---node02
[root@node02 ~]# mkdir /usr/share/nginx/html/static/
[root@node02 ~]# echo static_pools > /usr/share/nginx/html/static/index.html
[root@node02 ~]# vim /etc/nginx/conf.d/vhost.conf
server {
listen 80;
server_name static.wan.com;
location / {
root /usr/share/nginx/html/static;
index index.html index.htm;
}
}
[root@node02 ~]# systemctl restart nginx
---node03
[root@node03 ~]# mkdir /usr/share/nginx/html/upload/
[root@node03 ~]# echo upload_pools > /usr/share/nginx/html/upload/index.html
[root@node03 ~]# vim /etc/nginx/conf.d/vhost.conf
server {
listen 80;
server_name upload.wan.com;
location / {
root /usr/share/nginx/html/upload;
index index.html index.htm;
}
}
[root@node03 ~]# systemctl restart nginx
---node04
[root@node04 ~]# mkdir /usr/share/nginx/html/default/
[root@node04 ~]# echo default_pools > /usr/share/nginx/html/default/index.html
[root@node04 ~]# vim /etc/nginx/conf.d/vhost.conf
server {
listen 80;
server_name default.wan.com;
location / {
root /usr/share/nginx/html/default;
index index.html index.htm;
}
}
[root@node04 ~]# systemctl restart nginx
配置proxy host
[root@node01 ~]# vim /etc/nginx/conf.d/vhost.conf
upstream static_pools {
server 192.168.5.12 weight=1;
}
upstream upload_pools {
server 192.168.5.13 weight=1;
}
upstream default_pools {
server 192.168.5.14 weight=1;
}
server {
listen 80;
server_name web.wan.org;
location / {
if ($http_user_agent ~* "MSIE")
{
proxy_pass http://static_pools;
}
if ($http_user_agent ~* "Chrome")
{
proxy_pass http://upload_pools;
}
if ($http_user_agent ~* "Firefox")
{
proxy_pass http://default_pools;
}
}
}
[root@node01 ~]# systemctl restart nginx
node05测试
添加hosts解析
[root@node05 ~]# vim /etc/hosts
192.168.5.11 web.wan.org
windows 7 Ultimate. 测试
浏览器测试:http://web.wan.org/
添加hosts解析
IE 浏览器
Chrome
Firefox