我需要使用 nginx 创建代理 Web。如果我访问http://myweb.com/http://www.target.com/ proxy_pass 应该是http://www.target.com/
这是我的配置:
location / {
proxy_pass $request_uri;
proxy_cache_methods GET;
proxy_set_header Referer "$request_uri";
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ignore_headers Cache-Control;
proxy_hide_header Pragma;
proxy_hide_header Set-Cookie;
proxy_set_header Cache-Control Public;
proxy_cache cache;
proxy_cache_valid 200 10h;
proxy_cache_valid 301 302 1h;
proxy_cache_valid any 1h;
}
这是日志错误
2013/02/05 12:58:51 [error] 2118#0: *8 invalid URL prefix in "/http://www.target.com/", client: 108.59.8.83, server: myweb.com, request: "HEAD /http://www.target.com/ HTTP/1.1", host: "myweb.com"
答案1
尝试使用 nginx 的 map 模块按照您想要的方式定义变量:
map $request_uri $proxy_pass_target {
default "http://myweb.com";
~^/(.+)$ $key;
}
然后您可以$proxy_pass_target
在proxy_pass
指令中使用 而不是$request_uri
。
请注意,我没有测试它是否有效。也许您需要调整正则表达式。更多文档可在此处找到:http://wiki.nginx.org/HttpMapModule