我在使用nginx进行简单配置时遇到了问题。我有一个服务器托管了docker容器,所以nginx是在一个容器中。所以我们将url命名为foo.com
。我希望url foo.com/service1
实际上只是foo.com在另一个端口上转到www.example.com。因此实际上是将foo.com:4321
和foo.com/service2
拉入foo.com:5432
,以此类推。下面是我遇到问题的配置。
http {
server {
listen 0.0.0.0:80;
location /service1/ {
proxy_pass http://192.168.0.2:4321/;
}
location /service2/ {
proxy_pass http://192.168.0.2:5432/;
}
}
}
所以服务和nginx的地址是192.168.0.2。什么是更好的方式来做到这一点?提前谢谢你!
作为一个侧记,这是运行在一个码头集装箱。谢谢!
4条答案
按热度按时间rqcrx0a61#
我认为你应该检查你的
foo.com
是否指向正确的ip地址或不首先通过删除反向代理配置。然后,如果你的
ip
地址已经有一个服务运行在端口80上,你应该为每个服务指定server_name
,就像我的例子一样。Nginx只能通过server_name
来区分哪个服务响应哪个域。server_name
选项。y4ekin9u2#
z9smfwbn3#
我猜你的问题与Nginx本身无关,而是与Docker网络有关。你提供的信息不足以得出详细的结论,但这里有几点建议:
1.在运行nginx container的同一主机上运行一个简单的Docker容器,并在该容器内尝试
curl
(我看到您的回答是,您可以从运行Nginx的服务器调用curl
,但实际上并不相同)1.例如,如果运行nginx容器的服务器是OSX或Windows,则它可以使用具有其自己的网络堆栈、IP地址、路由等的中间Linux虚拟机。
ercv8c1e4#
这是我发送到内部glassfish的配置文件。请查看如何使用proxy_redirect关闭& proxy_set_header X-NginX-Proxy true;