我有几个dockerized服务,提供http(和https)。内部http端口(80)在docker级别映射到不同的端口,因此可以在主机上访问。这工作正常:
curl localhost:1234
将我带到容器中的 http 服务。
现在我希望可以通过 dns 访问它,而不必指定端口(我想屏蔽客户端的端口映射)。我想使用 nginx 将请求转发到http://myserver1
-> http://localhost:1234
。
nginx可以这样配置吗?可以配置多个转发吗,如下:
http://myserver1 --> http://localhost:1234
http://myserver2 --> http://localhost:1235
...
答案1
是的,它可以。
server_name 选项用于查找托管在同一 nginx 服务器上的不同站点之间的最佳匹配,例如
server {
listen 80;
listen [::]:80;
server_name myserver1;
另一个
server {
listen 80;
listen [::]:80;
server_name myserver2;
这样,它们就可以在端口 80 上运行,并根据是否被调用进行匹配http://我的服务器1或者http://我的服务器2。
现在如何连接到你的服务?你可以定义上游服务提供商,例如
#place this outside of the 'server{' block
upstream server1 {
server localhost:1234;
}
然后通过重定向到它
# place this inside the 'server{' block
location / {
proxy_pass http://server1;
}