【转】Nginx服务器的反向代理proxy_pass配置方法讲解

【转】Nginx服务器的反向代理proxy_pass配置方法讲解

转自:http://www.jb51.net/article/78746.htm

就普通的反向代理来讲
Nginx的配置还是比较简单的,如:

location ~ /*
{
proxy_pass http://127.0.0.1:8008;
}

或者可以

location /
{
proxy_pass http://127.0.0.1:8008;
}

Apache2的反向代理的配置是:

ProxyPass /ysz/ http://localhost:8080/

然而,如果要配置一个相对复杂的反向代理
Nginx相对Apache2就要麻烦一些了
比如,将url中以/wap/开头的请求转发到后台对应的某台server上
可以再Nginx里设置一个变量,来临时保存/wap/后面的路径信息

location ^~ /wap/
{
if ($request_uri ~ /wap/(\d+)/(.+))
{
set $bucketid $1;
set $params $2;
}
proxy_pass http://mx$bucketid.test.com:6601/$params;
}

也可以首先rewrite一下,然后再代理:

location ^~ /wap/{
rewrite /wap/(\d+)/(.+) /$2?$args break;
proxy_pass http://mx$1.test.com:6601;
}

或者

location ~* /wap/(\d+)/(.+)
{
proxy_pass http://mx$1.test.com:6601/$2?$args;
}

注意上面最后的?$args,表明把原始url最后的get参数也给代理到后台
如果在proxy_pass中使用了变量(不管是主机名变量$1或后面的$2变量),则必须得加这段代码
但如果pass_proxy后没用任何变量,则不需要加,它默认会把所有的url都给代理到后台,如:

location ~* /wap/(\d+)/(.+)
{
proxy_pass http://mx.test.com:6601;
}

而Apache2相对就简单多了:

ProxyPassMatch ^/wap/(.*)$  http://192.168.132.147/$1

if ($host ~* www.(.*)){
      set $host_without_www $1;
      rewrite (.*)$ http://$host_without_www/www$1;
    }

url的/问题
在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。
 
下面四种情况分别用http://192.168.1.4/proxy/test.html 进行访问。
第一种:

location /proxy/ {
     proxy_pass http://127.0.0.1:81/;
}

会被代理到http://127.0.0.1:81/test.html 这个url
 
第二咱(相对于第一种,最后少一个 /)

location /proxy/ {
     proxy_pass http://127.0.0.1:81;
}

会被代理到http://127.0.0.1:81/proxy/test.html 这个url
 
第三种:

location /proxy/ {
     proxy_pass http://127.0.0.1:81/ftlynx/;
}

会被代理到http://127.0.0.1:81/ftlynx/test.html 这个url。
 
第四种情况(相对于第三种,最后少一个 / ):

location /proxy/ {
     proxy_pass http://127.0.0.1:81/ftlynx;
}

会被代理到http://127.0.0.1:81/ftlynxtest.html 这个url
 
上面的结果都是本人结合日志文件测试过的。从结果可以看出,应该说分为两种情况才正确。即http://127.0.0.1:81 (上面的第二种) 这种和 http://127.0.0.1:81/.... (上面的第1,3,4种) 这种。

时间: 2024-10-20 12:26:21

【转】Nginx服务器的反向代理proxy_pass配置方法讲解的相关文章

Nginx服务器作反向代理实现内部局域网的url转发配置

情景 由于公司内网有多台服务器的http服务要映射到公司外网静态IP,如果用路由的端口映射来做,就只能一台内网服务器的80端口映射到外网80端口,其他服务器的80端口只能映射到外网的非80端口.非80端口的映射在访问的时候要域名加上端口,比较麻烦.并且公司入口路由最多只能做20个端口映射.肯定以后不够用. 然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用

Nginx学习之反向代理WebSocket配置实例

写在开始去年,做过一款竞赛打分的APP.具体需求,同组教师之间可以相互通信,及时通知同组人员,其他组员做了那些操作(当然,这只是针对特定操作) 写在开始 去年,做过一款竞赛打分的APP.具体需求,同组教师之间可以相互通信,及时通知同组人员,其他组员做了那些操作(当然,这只是针对特定操作). 实现方案 采用目前比较成熟的WebSocket技术,WebSocket协议为创建客户端和服务器端需要实时双向通讯的webapp提供了一个选择.其为HTML5的一部分,WebSocket相较于原来开发这类app

Nginx调度(反向代理)配置

nginx反向代理 优点:负载均衡,预防单点故障. 实验环境: 首先搭建两个web网站,为看效果,故设置内容不一样. 设置调度器: 1.修改配置文件 upstream webserver { server 192.168.2.100:80; server 192.168.2.200:80 } .. .. server { listen        80; server_name  localhost; location / { proxy_pass http://webserver;    

Nginx服务器 之反向代理与负载均衡

一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就是正向代理.正向代理的特点:就是我们明确知道要访问哪个网站地址. 反向代理: 客户端想获取服务器集群中(服务1,服务2,服务3 他们的资源相同)中的资源,但是客户端无法与该服务器集群建立连接,但我们可以与另一台服务器(代理服务器)建立连接且该服务器能获取服务器集群中的资源.这个时候客户端就可以通过请求代理服务器,获取想要的资源,但客户端并不知道给他资源的是哪个服务器.这种方式就是反向代

Nginx 之六: Nginx服务器的反向代理功能

一:Nginx作为代理服务器: 1.1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代理不支持从外网向内网访问资源,一般很少用. server { resolver 8.8.8.8; resolver_timeout 5s; listen 0.0.0.0:8080; access_log /home/reistlin/logs/proxy.access.log; error_log

构建Nginx服务器之三 反向代理Discuz论坛

实验目的: 利用nginx均衡两台lamp下Discuz,其中任意一台lamp的web 宕机,不影响discuz的使用! 实验拓扑: 实验环境: 服务器                           主机名                 IP地址 Nginx服务器                      nginx                  192.168.1.2 Discuz论坛(主mysql)              master                 192.

Nginx专题(1):Nginx之反向代理及配置

摘要:本文从Nginx的概念出发,分别从反向代理的概念.优势.配置代码3个方面介绍了Nginx的特性之一反向代理. 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方数据团队高级技术经理 周恒<Nginx的细枝末节> 分享者:宜信支付结算八方数据团队高级技术经理 周恒 原文首发于支付结算技术团队公号:野指针 一.Nginx概念解读 对于新事物的理解,最好的方式就是从概念入手,本文作为<Nginx专题>系列文章的第一篇,先从Nginx的名称开始来分解

nginx学习之反向代理负载均衡

nginx是一款很强大的http和反向代理服务器.它的功能非常强大. 并不是一开始就需要负载均衡集群,当网络流量不断增长,单个处理单元无法满足负载请求时,网络应用流量将要出现瓶颈时,负载均衡才会起到作用. 负载均衡与反向代理区别:负载均衡是反向代理的其中一个功能.反向代理服务器还可以缓存静态资源.当用户有请求时,直接返回反向代理服务器上的资源给用户,如果反向代理服务器上没有资源就转发给后端负载均衡服务器. 反向代理一般配置: http { upstream fight {         192

Nginx反向代理的配置

Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之支持PHP 5. 以源码编译的方式安装PHP与php-fpm 6. Nginx多站点配置的一次实践 7. Nginx反向代理的配置 Nginx 作为 web 服务器一个重要的功能就是反向代理.其实我们在前面的一篇文章<Nginx多站点配置的一次实践>里,用的就是 Nginx 的反向代理,这里简单再