Welcome! Log In Create A New Profile

Advanced

Re: proxy pass и кодирование GET-параметров

Dmitry Volyntsev
April 13, 2018 11:26AM
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
Subject Author Posted

Re: proxy pass и кодирование GET-параметров

Dmitry Volyntsev April 13, 2018 11:26AM

Re: proxy pass и кодирование GET-параметров

gz April 14, 2018 03:19PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 283
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready