docker - 子域、Nginx-proxy 和 Docker-compose

标签 docker nginx docker-compose subdomain devops

我正在寻找一种方法来配置 Nginx 以通过我的服务器的子域访问托管服务。这些服务和 Nginx 使用 Docker-compose 实例化。

简而言之,当输入 jenkins.192.168.1.2 时,我应该通过 Nginx 代理访问托管在 192.168.1.2 上的 Jenkins。

快速浏览一下我目前拥有的东西。 没有顶级域名它不起作用,所以它在 play-with-docker.com 上运行良好,但不是在本地,例如 192.168.1.2

server {
    server_name jenkins.REVERSE_PROXY_DOMAIN_NAME;
        location / {
            proxy_pass http://jenkins:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
}

看看我想要什么:https://github.com/Ivaprag/devtools-compose

我的总体目标是在不修改客户端 DNS 服务的情况下访问远程 docker 容器。

最佳答案

不幸的是,nginx 不支持这样的 IP 地址上的子域。

您要么必须修改客户端主机文件(您说过不想这样做)...


或者你可以像这样设置你的 nginx 重定向:

location /jenkins {
    proxy_pass http://jenkins:8080;
    ...
}

location /other-container {
    proxy_pass http://other-container:8080;
}

这将允许您在 192.168.1.2/jenkins

访问 jenkins

或者您可以尝试通过不同的端口为您的不同容器提供服务。例如:

server {
    listen 8081;
    location / {
        proxy_pass http://jenkins:8080;
        ...
    }
}

server {
    listen 8082;
    location / {
        proxy_pass http://other-container:8080;
        ...
    }
}

然后从192.168.1.2:8081/

访问jenkins

关于docker - 子域、Nginx-proxy 和 Docker-compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416518/

相关文章:

docker - 使用 Docker 自动构建的多镜像

Docker-compose 设置脚本以从容器内设置环境变量

facebook - AWS 负载均衡器超时问题且 Node/Express 中没有错误

docker - 从 docker 容器中创建一个千斤顶客户端

docker - 使用Kafka和Zookeeper运行微服务时docker-compose up错误

python - 如何在 Windows 上的 Docker 中运行带有 Tensorflow 的 python 脚本?

Python 多处理 : AttributeError: Can't pickle local object

php - 使用 Ubuntu 在 Nginx 上托管应用程序时出现路由问题

spring - 反向代理后面的 Thymeleaf 模板(在 Spring 引导应用程序中)未正确形成 url

docker - 从 docker-compose 替换 NGINX 配置中的环境变量