我有几个运行多个容器的应用程序,在一些docker-compose文件中组织,运行在不同的端口上。实际上像example.com:port一样访问它们。
示例:
现在我想用example.com/app1,example.com/app2来访问它们。我想用另一个运行nginx的容器来实现这一点。但我不知道如何编写nginx配置来实现这一目标。
答案 0 :(得分:0)
我知道,你直接要求Nginx作为入口控制器,但是你想看看traefik.io。这是一个反向代理/负载均衡器,用于动态后端。
对Nginx执行相同操作并非易事,因为您必须了解Docker如何处理网络和服务解析。
答案 1 :(得分:0)
你的nginx.conf
这样的东西server {
listen 80;
location /app1 {
proxy_pass http://example.com:1111;
}
location /app2 {
proxy_pass http://example.com:3333;
}
}
虽然请记住您在docker-compose中使用命名服务,然后您可以使用这些名称,因为它们将在默认网络中可用。 e.g。
server {
listen 80;
location /app1 {
proxy_pass http://app1:1111;
}
location /app2 {
proxy_pass http://app2:3333;
}
}
另外请记住nginx很难通过环境变量进行配置而不使用lua,这与docker IIRC有点争执,所以最好只是硬编码。