子域,Nginx代理和Docker组成
问题描述:
我正在寻找一种方法来配置Nginx通过我的服务器的子域来访问托管服务。这些服务和Nginx使用Docker-compose实例化。子域,Nginx代理和Docker组成
总之,当输入jenkins.192.168.1.2
时,我应该访问Jenkins托管在192.168.1.2
与Nginx代理重定向。
快速查看我目前有什么。它不起作用没有顶级域名,所以它工作正常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服务。
答
访问詹金斯
不幸的是,nginx并不支持像这样的IP地址上的子域。
你要么必须修改客户端的主机文件(你说你不想做)......
或者你可以设置你的nginx像这样重定向:
location /jenkins {
proxy_pass http://jenkins:8080;
...
}
location /other-container {
proxy_pass http://other-container:8080;
}
这将让你在192.168.1.2/jenkins
访问詹金斯
或您可以尝试通过不同的端口为您的不同容器提供服务。 E.g:
server {
listen 8081;
location/{
proxy_pass http://jenkins:8080;
...
}
}
server {
listen 8082;
location/{
proxy_pass http://other-container:8080;
...
}
}
,然后如果你已经在使用泊坞窗,撰写我建议使用nginx的jwilder代理容器从192.168.1.2:8081/
答
访问詹金斯。
https://github.com/jwilder/nginx-proxy
这可以让你的Web服务容器的无限数量的增加所定义的nginx代理的后端,例如:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "nginx_certs:/etc/nginx/certs:rw"
nginx:
build:
context: ./docker/nginx/
dockerfile: Dockerfile
volumes_from:
- data
environment:
VIRTUAL_HOST: www.host1.com
nginx_2:
build:
context: ./docker/nginx_2/
dockerfile: Dockerfile
volumes_from:
- data
environment:
VIRTUAL_HOST: www.host2.com
apache_1:
build:
context: ./docker/apache_1/
dockerfile: Dockerfile
volumes_from:
- data
environment:
VIRTUAL_HOST: www.host3.com
nginx的代理安装在主机泊坞窗袜子文件为了获得有关运行的其他容器的信息,如果其中任何一个容器具有env变量VIRTUAL_HOST,那么它将把它添加到它的配置中。
谢谢,我已经尝试了你的建议,但它不起作用,当连接到192.168.1.2/jenkins时,我有一个404错误...猜猜我将不得不修改主机文件 – Ivaprag
错误终于覆盖的地址,当我去192.162.1.2/jenkins时,我得到192.168.1.2/login?from=%2Fjenkins。我会尝试更多的东西 – Ivaprag
是的,看起来詹金斯是重定向的东西.. 我已经编辑了不同的可能解决方案的答案。让我知道如果有帮助 – sharif9876