Мне нужно создать прокси-сервер с помощью nginx. Если я получу доступ 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"
Попробуйте модуль карты nginx, чтобы определить переменную так, как вы хотите:
map $request_uri $proxy_pass_target {
default "http://myweb.com";
~^/(.+)$ $key;
}
Тогда вы можете использовать $proxy_pass_target
в твоем proxy_pass
директива вместо $request_uri
.
Обратите внимание, что я не проверял, работает ли это. Возможно, вам нужно настроить регулярное выражение. Дополнительную документацию можно найти здесь: http://wiki.nginx.org/HttpMapModule