Nginx 按服务器名称转发

Nginx 按服务器名称转发

我有几个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;
}

相关内容