On 12.04.2018 05:40, gz wrote:
Добрый день.
Использую SSI для включения ответа стороннего сервера.
<!--#include virtual="/include/"-->
location /include {
internal;
proxy_pass
http://example.com/endpoint?server=$server_name&uri=$request_uri&ua=$http_user_agent;
}
Серверу нужно передать ряд GET-параметров (не заголовков).
Однако, при передаче того же $http_user_agent сервер отвечает ошибкой 400.
Судя по всему, параметры, указанные в URI proxy_pass не URI-кодируются.
Есть ли способы сформировать корректный запрос с произвольными параметрами?
Есть возможность использовать функциональность njs для сериализации
аргументов запроса.
http://nginx.org/en/docs/http/ngx_http_js_module.html
nginx.conf:
http {
js_include http.njs;
js_set $encoded_request_uri encoded_request_uri;
...
<use $encoded_request_uri>
}
http.njs:
function encoded_request_uri(req) {
return encodeURIComponent(req.variables.request_uri);
}
Однако, в общем случае задача усложняется тем что содержимое
$request_uri может быть уже url-encoded.
Posted at Nginx Forum:
https://forum.nginx.org/read.php?21,279410,279410#msg-279410
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru