🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# nginx案例-不同客户端显示不同信息 [TOC] ## 一、需求梳理: 1. 需求 根据用户请求客户端软件不同,显示不同页面信息,常见为手机端和网页端界面排版会不一样 2. 资源池 |用户请求[URI]|处理请求服务器|站点目录|功能| | --- | --- | --- | --- | |/|10.0.0.8:80|html/www/|iphone服务器| |/|10.0.0.7:80|html/www/|android服务器| |/|10.0.0.9:80|html/www/|pc服务器| 3. 环境搭建 ```sh yum install nginx -y egrep -v "#|^$" /etc/nginx/nginx.conf.default >/etc/nginx/nginx.conf mkdir -p /data/html/www cp /usr/share/nginx/html/* /data/html/www sed -ri '/^$|#/d' /etc/nginx/nginx.conf sed -ri '/^$|#/d' /etc/nginx/conf.d/default.conf 省 ``` ## 二、解决方法: ### 1. 完成nginx网站服务器配置 **创建测试环境** 10.0.0.8 主机上生成网站测试页面文件 ```sh mkdir -p /data/html/www/upload echo "test in Ip 10.0.0.8 is iPhone page" >/data/html/www/noah.html ``` 10.0.0.7 主机上生成网站测试页面文件 ```sh mkdir -p /data/html/www/static echo "test in Ip 10.0.0.7 is Android page" >/data/html/www/noah.html ``` 10.0.0.9 主机上生成测试页面文件即可 ```sh echo "test in Ip 10.0.0.9 is pc page" >/data/html/www/noah.html ``` ### 2. 利用lb01进行访问测试 测试10.0.0.8访问是否正常 ```sh [root@xxx~]# curl -H host:www.etiantian.org 10.0.0.8/noah.html test in Ip 10.0.0.8 is iPhone page ``` 测试10.0.0.7访问是否正常 ```sh [root@xxx~]# curl -H host:www.etiantian.org 10.0.0.7/noah.html test in Ip 10.0.0.7 is Android page ``` 测试10.0.0.9访问是否正常 ```sh [root@xxx~]# curl -H host:www.etiantian.org 10.0.0.9/noah.html test in Ip 10.0.0.7 is pc page ``` ### 3.完成nginx反向代理服务器配置 **配置upstream模块信息** ```sh upstream iphone { server 10.0.0.8:80; } upstream android { server 10.0.0.7:80; } upstream pc { server 10.0.0.9:80; } ``` **配置proxy_pass模块信息** ```sh server { listen 80; server_name www.etiantian.org; root html; index index.html index.htm; location / { if ($http_user_agent ~* "iphone") { proxy_pass http://iphone; } if ($http_user_agent ~* "android") { proxy_pass http://android; } proxy_pass http://pc; proxy_set_header host $host; proxy_set_header X-Forwarded-For $remote_addr; } } ```