如何在容器外运行 Nginx 来为 Docker 应用程序提供服务?

如何在容器外运行 Nginx 来为 Docker 应用程序提供服务?

我有一个 docker 容器,它只显示随机的猫图片。容器的镜像位于我用于个人网站的服务器上,我想在 Nginx 中添加一条路由,以便我导航到应用程序并查看当天的猫。

使用以下配置,当我尝试导航到 时,出现 404 错误my_site.com/cats

sites-available/my_site.conf

server {
  listen 443 ssl;
  include snippets/my_site-ssl.conf;
  include snippets/ssl-params.conf;

  server_name my_site.com www.my_site.com;
  root /var/www/my_site.com/html;

  #working location directives for my_site here...

  location = /cats {
    proxy_pass https://localhost:5001;
  }
}

使用以下命令调用 Docker 容器:

$ docker run --rm -d -p 5001:5000 --name cats handsomegorilla/cats

为了解决这个问题,我所做的每一次搜索都只是返回“如何在容器中运行 nginx”的一些变体结果,这显然是不是我的目标就是此

我是 Docker 新手,因此这可能是我应该询问 Stack Overflow 的问题,但我想我应该从服务器开始,然后再回到 Docker。

答案1

好的,所以我通过执行以下操作解决了这个问题:

我做了/etc/nginx/conf.d/my_site.conf

upstream catApp {
  server 127.0.0.1:5001;
}

我修改了位置指令以sites-available/my_site.com使用

# unchanged configuration stuff...

 location = /cats {
   proxy_pass http://catApp/; #trailing / is important for removing req uri
 }
}

重新加载 nginx 并启动应用程序

$ docker run --rm -d -p 127.0.0.1:5001:5000 handsomegorilla/cats

相关内容