技术解析

nginx 能配置通过一个代理么?
0
1975-02-21 18:15:11
idczone

我知道这个需求感觉上来说:有点奇葩...

公司开发的网页版本有很多,而且 域名还是一样的
有的还要通过一个公司的特定HTTP代理才能访问,导致查看不同版本时还要不停换代理,非常麻烦。

有的同事连虚拟机都用起来了...

翻了半天nginx文档,没找到相关的资料

实际试了下proxy_pass,请求的URI不对,也没法改

公司HT国外服务器TP代理用的是Squid

因为开发是在win平台,也没法编译各种nginx插件...

想问下,这需求有方案么?nginx不行的话,有其它工具行么?


proxy_pass 代理ip,同时set_header设置Host为域名
一般这种测试需求应该用hosts,或者本地dnsmaq
最好让后端的人给你们开放测试端口,限制内网连接

我一开始是这样配的
```
sub_filter real.cn demo.cn;
sub_filter_once off;
sub_filter_types *;
location / {
proxy_pass http://xxx.xxx.xxx.xxx:8080;
proxy_set_header Host image.real.cn;
proxy_set_header X-Real-IP 我的IP;
proxy_set_header X-Forwarded-For 我的IP;
}
```
但是没用,squid会报:
```
The following error was encountered while trying to retrieve the URL: /
Invalid URL
```
抓包发现nginx proxy_pass请求是
```
GET / HTTP/1.1
```
所以报错了,但是$request_uri又改不了...

主要是开发,测试,线上测试,正式等等几个版本域名都用的一样的,用host要看其它版本就要不停切换host,非常麻烦....

@ryd994


invalid url只能让管理代理服务器的人给你们加intercept参数,nginx自己搞不定
另外ie的代理设置可以通过修改注册表,你保存几个reg文件,导入就行
chrome/firefox都可以插件切换
其实对改hosts可访问的服务器也可以通过设置代理为那台服务器访问,结合pac的话更方便
切换hosts有什么麻烦的,加个#保存一下的事

@ryd994
主要是想如果可以反代,我就一劳永逸了,还能直接开不同版本对比...
实在不行,我也只能切换host了

哦错了,是用插件切换代理…

其实我觉得 PAC 不就挺好的么…


比如我3个版本,域名都是 demo.cn,还不能改,这个pac我怎么写?

今天看了半天squid,好像也不好搞
曲线救国了一下,装了个Proxifier,多开了个nginx专门穿代理跑反代...比写代码简单点

此时我已是泪流满面

匹配不同的url?比如 http://demo.cn/v1/xxxx 这样的……


不行的,比如静态文件地址 static.demo.cn,是在项目配置文件里面写死的,文件是md5 hash做名字,只用pac,我没法区分的
我们不带v1 v2这样的二级目录...
泪流满面

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服