我有一些nginx问题。希望你能帮我解决这个问题。
有几个服务器
和5,6,...还有更多的服务器主机名为apache1,apache2,redis1等......
现在我的客户端希望直接向位于内部网络的服务器发送http请求调用。但这是不可能的(因为没有Public ips ..)所以调用必须首先传入nginx代理。
我只是徘徊,当我从用户pc调用请求时,目标服务器主机名放在请求的标头或URL上,nginx可以解析它并组合到内部网络中的目的地吗?
例如我这样称呼,
http://nginxproxy:1888/[destination hostname]/[path, files like index.html, some keys and values.&k1=v1. etc....]
我希望nginx传递并转换它并像这样调用目标主机
http://[destination hostname]:8888/[path, files like index.html, some keys and values.&k1=v1. etc....]
我尝试这样做。有一些错误..
打印错误日志 “localhost无法解析(10060:操作超时),客户端:127.0.0.1,服务器:localhost,请求:”GET / localhost / 8080 / index“
server {
listen 1888;
server_name localhost;
location ~^\/([a-zA-Z0-9]+)\/([0-9]+)\/([a-zA-Z0-9]+) {
proxy_pass http://$1:$2/$3;
}
}
还有一个..
在java代码中, 我这样设置
import org.apache.http.HttpMessage;
HttpMessage request;
request.addHeader("destinationHost", "tomcat2");
request.addHeader("destinationPort", "8888");
并调用此网址
http://nginxproxy:1888/[path, files like index.html, some keys and values.&k1=v1. etc....]
可以将网址转换为
http://tomcat2:8888/[path, files like index.html, some keys and values.&k1=v1. etc....]
并传递到那里?
如果是这样,我该如何设置nginx.conf
非常感谢你,祝你有个美好的一天..