反向代理, 这个反向很容易让人误解, 总以为是要反着做什么事情似的~这个在英文中的原文也是 ngix reverse proxy 的确翻译过来是反向的意思.其实并不是数据流量的反向, 是通常意义上的代理对象的反向,因为正常的代理, 总是代理客户端, 为客户服务去处理一些复杂的事情. 所以 代理是在客户端的多.这里的 ngix 的反向代理, 是代理服务器这里, 更多体现在 负载均衡, 接口请求转发这里,放在了服务端这边, 就像代理反着帮了服务端代理一样. 理解意思之后, 剩下的应该就容易理解多了。
随着移动互联网时代的来临,很多WEB网站都已经推出了基于手机,Ipad等移动客户端的页面访问,这里介绍一下如何利用用户UA实现用户不同终端下的用户访问:
$http_user_agent 为nginx的内置参数,通过它可以指定用户UA满足某类型时触发什么样的操作,我们这里以iPad为例,配置一下手机端和WEB端的分开访问,首先编辑nginx server {} 程序段,增加如下信息:
当用桌面浏览器和移动浏览器访问的结果是不一样的。其中的手段可能有两种:
- 转载Ngix反向代理判断
- 服务端直接判断UA输出不同的界面,JAVA和PHP等后台语言都提供了支持框架
需要在nginx项目根目录存放pc端项目,另一个wap用来存放手机端项目;
一、跳转到二级目录方式:
配置nginx.conf:
server
{
listen 80;
server_name www.123.com;
index index.html index.htm index.php;
root /www;
location / {
if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC\-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT\-)|(SonyEricsson)|(NEC\-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi\-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG\-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC\-)|(SED\-)|(EMOL\-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) {
root /www/wap;
}
}
二、跳转到二级域名方式:
server {
listen 80;
server_name baidu.com;
if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|
(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)
|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|
(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|
(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|
(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )
{
rewrite ^/(.*)$ http://m.baidu.com/$1 permanent;
}
location / {
proxy_pass http://www.baidu.com/;
}
}
重新加载nginx即可。