NGINX 容器路由:Nginx 不会重定向到 docker 容器

2023-12-28

我是网络服务器领域的新手。我正在设置一个服务器(example.de),为两个不同的 Docker 化应用程序提供服务。暴露的端口3000(app1)和5000(app2)分别映射到服务器端口9000和9001。请求 url example.de:9000 和 example.de:9001,内容已正确加载。现在,我想使用 NGINX 容器作为反向代理来重定向 URL example.de/app1 和 example.de/app2。

“包括/etc/nginx/mime.types;”默认情况下在 nginx.conf 文件中设置。

默认的.conf是

server {
    listen 80;
    listen [::]:80;
    server_name example.de;


    location /app1{
      proxy_pass http://app1:3000; 
    }

    location /app2{
      proxy_pass http://app2:5000;
    }
}

工作的 docker-compose 文件如下所示:

version: '3'
services:
    app1:
        build:
            context: app1
        container_name: app1
        restart: "<RESTART_POLICY>"
        volumes:
            - vol_app1:/data
    app2:
        build:
            context: app2
        container_name: app2
        restart: "<RESTART_POLICY>"
        volumes:
            - vol_app2:/data
    nginx-proxy:
      container_name: nginx
      build:
        context: nginx/
      ports:
        - "80:80"
      depends_on:
        - app1
        - app2
      links:
        - app1
        - app2
      volumes:
        - vol_nginx:/etc/nginx/conf.d
volumes:
    vol_app1:
        driver_opts:
            type: none
            device: /vol/app1
            o: bind
    vol_app2:
        driver_opts:
            type: none
            device: /vol/app2
            o: bind
    vol_nginx:
        driver_opts:
            type: none
            device: /vol/nginx
            o: bind

NGINX Dockerfile 是:

FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf

f 当我访问 url 时,重定向设置类似于 default.confhttp://example.de/app1 http://example.de/app1,浏览器请求/app1不适用于入口点/(xxx.x.xx.xx - - [2019年8月9日:06:31:57 +0000]“获取/app1HTTP/1.1" 404 77 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0" "-")。

UPDATE

所有容器都在同一网络中。Docker 文档 https://docs.docker.com/compose/networking/: By default Compose sets up a single network for your app. Each container for a service joins the default network and is both reachable by other containers on that network, and discoverable by them at a hostname identical to the container name.

更新二

如果我不重定向,它会通过将上游块添加到 default.conf 来工作:

upstream app1{
server app1:3000;
}

upstream app2{
server app2:5000;
}


server {
    listen 80;
    listen [::]:80;
    server_name example.de;


    location / {
      proxy_pass http://app1; 
    }

}

然而,带有 /app1 和 /app2 的路径不会重定向到 docker 容器。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NGINX 容器路由:Nginx 不会重定向到 docker 容器 的相关文章

随机推荐

  • 如何在 iOS 中创建不属于 Unicode 的下标字符

    我已经尝试创建一个带有下标字符的 NSString 一段时间了 但没有成功 在 iOS 中是否可以做到这一点 我需要一种方法将字符串中的字符更改为下标或上标 但我无法为此使用 Unicode 因为 Unicode 不包含所有字母 我的猜测可
  • 何时决定在java中使用静态函数[重复]

    这个问题在这里已经有答案了 何时决定使用静态函数 当我的函数仅在同一个类中调用时 是否需要将其设为静态 作为搜索 我找不到完整清晰的声明 静态方法或变量不仅仅是一个对象的一部分 它们是与声明类相同类型的所有实例的一部分 当您在类中将函数声明
  • “str”对象没有属性“get”

    我正在研究 Django 中的 Braintree 集成 我已经关注了本指南 https www braintreepayments com docs python guide getting paid 但是 我收到错误 str objec
  • 更改 Tomcat Web 应用程序上下文

    我有一个网络应用程序 它是在根上下文 下设计并始终工作的 所以所有css js和链接开头 例如 css style css 现在我需要将此 Web 应用程序移动到一些不同的上下文 比方说 app1 很容易改变server xml配置文件并在
  • 为什么要指定函数返回类型?

    大多数时候我读到我们应该尽可能多地使用类型推断 当编写函数时 我知道我们必须输入参数 因为它们无法推断 但为什么我们必须输入返回值 TypeScript 正在处理这个问题 显式键入函数的返回值有什么好处 到目前为止 我只读到我应该这样做 但
  • Delphi 2006 不允许在记录方法中使用记录类型的 const 参数?

    UPDATE 简单的解决方法 方法 运算符字段之前的数据字段 今天我尝试使用我能做的最简单的例子来重现这个错误 我从一个基本记录 TBasicRecord 开始 只有简单的设置和打印方法 没有运算符 并且传递 const x TBasicB
  • 如何查找 FileField Django 图像的高度和宽度

    如果我们的模型定义如下 如何找到图像的高度和宽度 class MModel document FileField format type CharField 并且图像保存在文档中 那么如果它是图像 我们如何找到文档的高度和宽度 如果文件始终
  • AWS CodePipeline:在 CodeBuild 中获取 CloudFormation 输出

    我正在使用 AWS CodePipeline Cloudformation 和 CodeBuild 学习一些开发运营技术 我的 简化的 管道是这样的 推送到 github 存储库会触发管道 CloudFormation 构建 更新后端基础设
  • 如何在Python中获取视频文件的方向

    我想将视频文件的帧加载到 numpy 数组中 我希望帧正确直立 这意味着我需要读取视频文件中的方向元数据 并相应地旋转加载的帧 我有一种加载帧的方法 opencv 的 python 绑定 所以我需要的是一种读取视频文件的方向元数据的方法 我
  • 在 Angular2 组件样式表中覆盖 Bootstrap 中的样式

    我有一个 Angular2 应用程序 使用 Angular CLI 构建 其中包含多个组件 每个组件都有一个引用的样式表 scss 这些样式表中的独特样式已正确应用于组件模板 我不能做的是覆盖来自外部 CSS 的样式 这些样式包含在这些组件
  • 在 exec() 中定义的回调期间关闭丢失

    这是我使用 Python 的第三天 所以请原谅新手的错误 这是我的工作代码 person test 向老板注册回调 老板调用回调 一切正常 class Boss def registerCallback self cb self cb cb
  • 可以将方程的表达式放在其图形表示附近吗?

    当我在 Mathematica 中绘制一个函数时 它是否有可能自动将其方程 即 y 2x 或什至其他文本放在其附近 乍一看我没有找到任何选项 但如果有的话我想知道 Thanks 使用 Mathematica 6 或更高版本 我经常使用Too
  • 在不使用 strcmp 的情况下将 char* 与字符串进行比较

    我正在尝试将 char 的内容与字符串进行比较 我可以打印内容 但无法比较它们 include
  • eclipse ubuntu 18.04安装java.lang.ClassNotFoundException:

    安装了eclipse和Java8 但它不起作用 当尝试运行它时 会发生以下错误 发生了错误 看日志文件 home shield eclipse org eclipse platform 3 8 155965261 configuration
  • Laravel 资源通过 ajax 销毁

    我可以通过ajax使用资源吗 我有这个资源 Route resource dashboard DashBoardController js file ajax type delete dataType json data id id url
  • 仅授予视图权限

    我的数据库中有一个用户 我想授予他只读一个视图的权限 仅此而已 没有表 什么都没有 我怎样才能做到这一点 多谢 PS 我使用的是 MS SQL Server 2005 USE DB1 GRANT SELECT ON OBJECT View1
  • 使用 Rspec 2 和 Devise 测试 Rails 3 中的助手

    我的帮助程序代码如下所示 并且工作正常 module ProvidersHelper def call to review provider if user signed in review Review find by provider
  • Android Studio 中的 R.java 文件在哪里?

    Android Studio 中的 R java 文件在哪里 有人可以帮忙解决这个问题吗 我已经尝试过谷歌寻找答案 但找不到任何解决方案 Based on the new stable release of Android Studio 3
  • ASP.NET WebApi 和部分响应

    我正在开发一个 ASP NET WebApi 项目 老板希望返回支持 部分响应 这意味着虽然数据模型可能包含 50 个字段 但客户端应该能够请求响应的特定字段 原因是 如果他们要实现一个列表 他们根本不需要所有 50 个字段的开销 他们可能
  • NGINX 容器路由:Nginx 不会重定向到 docker 容器

    我是网络服务器领域的新手 我正在设置一个服务器 example de 为两个不同的 Docker 化应用程序提供服务 暴露的端口3000 app1 和5000 app2 分别映射到服务器端口9000和9001 请求 url example