A客户端只能http连接nginx所在服务器B,如果要实现连接其它网络站点C,需要通过nginx所在服务器B进行转发,即由nginx做代理服务。A客户端发起对服务器B的http连接,并在url中携带C站点地址,nginx从中解析并转发。
请求样例:
# B服务器地址www.test2.com,C服务器地址www.test.com
http://www.test2.com/?url=http://www.test.com
在nginx.conf文件中实现配置如下,
location / {
if ($query_string ~* url=(\S+)) {
proxy_pass $1;
}
}
运行后,A客户端返回502错误,查看nginx的error.log日志,显示“no resolver defined to resolve www.test.com",如果在proxy_pass中直接使用www.test.com,能正常返回。
在使用变量做为服务地址时,需要用resolver命令显示指定DNS服务器地址。因此在nginx.conf文件中的http模块中增加一行resolver命令。
resolver 8.8.8.8;
请求成功!
本文暂时没有评论,来添加一个吧(●'◡'●)