--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
加一个 proxy_set_header Host XXX; 试试
eN_Joy <jin...@gmail.com>于2014年2月 14日星期五写道:
有个nginx配置的问题,一直很受困扰,跟openresty(正在学习中)关系可能不大,但是在这里 借用一下达人们的脑袋;-)
位置是这样配置的:
location /get
{
set $hostx "";
set $addrs "";
if ( $uri ~ "^/get/http./+([^/]+)/(.+)$") {
set $hostx $1;
set $addrs $2;
}
resolver 8.8.8.8;
proxy_set_header Referer " ";
proxy_pass http://$hostx/$addrs;
proxy_redirect off;
access_log /var/log/nginx/get_access.log;
}
基本上浏览器指向:
http://mysite.com/get/http://foo.com/bar/some.html
时会返回:
http://foo.com/bar/some.html
这一步算是达到目的。只是语句 `proxy_set_header referer " "`好像被忽略. 不管填入什么字串(上例置空), get_access.log 日志总是显示referer域为本站实际链接页面。想请教一下:
proxy_set_header Referer " ";到底是做什么用的呢?
多谢!
Thanks,
--
-- Thanks -YWB
这个配置确实将server { listen 8008; location / { resolver 8.8.8.8; proxy_pass http://$http_host$request_uri; } access_log /var/log/nginx/proxy_access.log; }
透明代理本身是成功的,在浏览器端设置这个代理的话,proxy_access.log记录了所有的流量。
将http://foo.com/bar/some.html 的URL转写一下,配置一个location
(范例URL为:/www.patterns.com/cat/subcat/sample.html)
location ~* (patterns) { set $hostx ""; set $addrs ""; if ( $uri ~ "^/(.*?)(/.*)$") { set $hostx $1; # could be www.patterns.com set $addrs $2; # could be /cat/subcat/sample.html } proxy_pass http://127.0.0.1:8008/http://$hostx$addrs; proxy_set_header referer ""; }
/www.patterns.com/cat/subcat/sample.html 送到了8008端口,日志显示:127.0.0.1 - - [12/Feb/2014:20:44:28 -0600] "GET /http://www.patterns.com/cat/subcat/sample.html HTTP/1.0" 502 574 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"
注意:
1. 这时 referer域的设置生效了, 显示为空;
2. 代理收到的请求为: ·"GET /http://www....",而不是·"GET http://www...`,所以结果为502 Bad Gateway. (通过浏览器设置代理访问时日志为 ·"GET http://www...`,日志显示为200 OK)
不太懂的是,
1.何以在这种情况下,proxy_set_header referer ""; 又显示指令被执行呢?
2.location的配置,能否使到8008端口收到http://www...的请求,而不是/http://www...这样的呢?
多谢。
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
需求是定制请求http://foo.com/bar/some.html页 面头信息的referer域。
有个nginx配置的问题,一直很受困扰,跟openresty(正在学习中)关系 可能不大,但是在这里 借用一下达人们的脑袋;-)
--
-- Thanks -YWB
-- Thanks -YWB
抱歉,今天已经洗洗睡了,明天再试。我的猜测是在我的第一段代码中,仍然会被忽略。而在我8008端口代码中会执行,但是因为代码的502错误,所以不能采用。谢谢!
Good night all!
--- Sent from mobile device