gpt4 book ai didi

nginx - 在 docker 环境中设置子域

转载 作者:行者123 更新时间:2023-12-02 18:06:38 25 4
gpt4 key购买 nike

我在家里的 Ubuntu 服务器 (14.04 Trusty Tahr) 上的 Docker 容器中运行不同的服务。我目前的设置如下:

  • Jenkins jenkins.slarti
  • gitlab.slarti 下的 Gitlab 和 leanlabs.io
  • servlet.slarti (apache tomcat) 下的 Java Servlet Webserver
  • web.slarti (nginx) 下的“普通”网络服务器

这些域是虚拟主机的,我已经设置了一个 nginx 代理。

Nginx 代理 docker 运行:

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy

Jenkins docker 运行:

docker run -d --name jenkinsci --expose 8080 -e VIRTUAL_HOST=jenkins.slarti -e VIRTUAL_PORT=8080 jenkins

正常的网络服务器 docker 运行:

sudo docker run --name nginx1 -P -d --expose 80 -e VIRTUAL_HOST=web.slarti nginx

Gitlab & leanlabs.io docker 运行:

docker run -d  --link kanban_redis:kanban_redis -p 80:80 -e KANBAN_SERVER_HOSTNAME="http://localhost"  -e KANBAN_GITLAB_URL="http://mygitlab.com"  -e  KANBAN_REDIS_ADDR="kanban_redis:6379" --expose 80 -e VIRTUAL_HOST=gitlab.slarti leanlabs/kanban:1.4.0

Apache Tomcat docker 运行:

docker run -it --rm -p 8888:8090 -e VIRTUAL_HOST=servlet.slarti tomcat:8.0

我根据本指南进行了设置 http://blog.florianlopes.io/host-multiple-websites-on-single-host-docker

目前我无法 ping web.slarti、servlet.slarti 等。如果我在浏览器中输入它们的 url,我也无法访问这些域。

我可以通过 slarti:8888 访问 Apache Tomcat,但我想通过 servlet.slarti 访问它,但失败了,因为我没有 DNS 设置。

我需要做什么才能访问子域 web.slarti、servlet.slarti 等?如何正确设置反向代理以便访问域?我必须如何配置 DNS?

最佳答案

我不是网络专家。但在阅读您的帖子后,您似乎确实需要这样的 DNS 配置:

A -> slarti (or IP)
CNAME jenkins.slarti -> slarti
CNAME gitlab.slarti -> slarti
CNAME servlet.slarti -> slarti
CNAME web.slarti -> slarti

这就是我将我的子域重定向到我的 Docker 容器所做的。

如果没有正确的 DNS 配置,您的子域将无法访问。

使用此 DNS 配置,每次您请求 gitlab.slarti 时,您实际上都会到达 Nginx,Nginx 又会将您重定向到正确的 Docker 容器(如果 VIRTUAL_HOST 环境变量配置为 gitlab.slarti)。

关于nginx - 在 docker 环境中设置子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36149196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com