首页 > nginx技巧 > nginx反向代理的具体使用案例,包括目录不带斜杠跳转的问题

nginx反向代理的具体使用案例,包括目录不带斜杠跳转的问题

2013年7月27日 发表评论 阅读评论

由于反锁的备案流程,本人决定采用nginx做反向代理,原理很简单:
在香港购买一台VPS,安装nginx软件+iis软件+apache软件+php软件+mysql软件,作用如下:
1,nginx用来监听80端口,处理所有的http请求
2,iis用来监听81端口,用来处理asp程序
3,apache用来监听82端口,用来处理本地VPS中的php+mysql程序
原理如下,当用户访问指定域名的时候,通过nginx监听域名,可以指定单独到81或者82端口,如此,本地可运行asp程序和php程序,当遇到适当的域名的时候,直接反向到指定另外一台国内服务器上(支持80端口开放,或者没开放80端口的IP)

这个方法真的实在是太棒了,呵呵,有几下优点:
1,可以免备案
2,支持asp+php+asp.net+jsp+access+mysql+sqlserver,全方面反向代理

但是实际运作配置环境中,遇到一个问题,就是目录不带斜杠跳转的问题,那么如何解决?
可以通过nginx中的proxy_redirect解决,如下:

假如你要访问的域名是www.zhanghongliang.com,这个时候请求的过程是:
用户->香港->nginx->国内
那么nginx会自动反向到国内的指定域名,比方说是:www.zhanghongliang.cn,但是如果我输入www.zhanghongliang.com/category/divcss那么会自动跳转到www.zhanghongliang.cn/category/divcss,这样本身不需要暴漏的域名就被暴漏了,解决办法是:
在nginx的server中加入
proxy_redirect http://www.zhanghongliang.com/ /;

以下是来自网络的方法(经过本人nginx windows 1.4.1测试无效):

1,加入:server_name_in_redirect off;(但是nginx自0.9.8开始就默认是off)
2,将server_name localhost;改成server_name $hostname;(测试无效,因为我是多个虚拟主机server,无法使用$hostname)
3,加入配置重写文件:if (!-f $request_filename){ rewrite ^/([^.]+[^/])$ http://$host/$1/ permanent; }(未测试)

用我提供的方法可以完美解决“nginx反向代理目录不带斜杠跳转的问题”;
升华,结束!

  1. 本文目前尚无任何评论.
您必须在 登录 后才能发布评论.
css.php