我正在尝试为请求rest api设置反向代理,例如,我正在发出这样的请求:
127.0.0.1/v1/resources/get/list/23948
目标主机上的预期请求应如下:
http://api.example.com/v1/resources/get/list/23948?key=skdma239mfmd0idfm9844
您可以在预期的请求中看到一个查询字符串,其原因是为了保护客户端的值,以免敏感数据泄漏。
我尝试过这样的位置定义:
location /v1/resources/get/ {
proxy_pass http://api.example.com$uri?key=sdkmfg234msdkmad9898
}
但是由于某种原因,NGINX的响应为500。
是否可以在proxy_pass
中添加查询字符串?还是可以将查询字符串添加到反向代理中以保护此数据?
注意:我知道stackoverflow中存在一个与此问题类似的问题,但是该问题中没有任何答案可以解决我的问题。 我已经编辑了我上次尝试的代码,nginx响应502状态
答案 0 :(得分:0)
在对nginx
文档进行了深入的阅读之后,在@RichardSmith的帮助下,我能够使用proxy_pass
通过resolver
成功地发出请求。
问题在于,当在域中使用proxy_pass
时,nginx的内置解析器将尝试自行解析以查看是否缓存了DNS,因为没有定义DNS解析器,nginx无法完成请求。
我的位置定义最终像这样:
location /v1/resources/get/ {
resolver 8.8.8.8;
proxy_pass http://api.example.com$uri?key=sdkmfg234msdkmad9898
}
因为这是为了进行测试,所以我使用了Google的默认解析器8.8.8.8