docker和jwilder / nginx-proxy http / https问题

我通过boot2docker在osx上使用boot2docker

我有2台主机: site1.loc.test.comsite2.loc.test.com指向了site1.loc.test.com主机的ip地址。

两者都应该可以通过80443端口。

所以我使用jwilder/nginx-proxy进行反向代理。

但实际上,当我通过docker-compose运行所有的端口时,每次尝试通过80端口打开时,我都会redirect到443 (301 Moved Permanently)

可能是我错过了jwilder/nginx-proxyconfiguration中的东西?

泊坞窗,compose.yml

 proxy: image: jwilder/nginx-proxy volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - certs:/etc/nginx/certs ports: - "80:80" - "443:443" site1: image: httpd:2.4 volumes: - site1:/usr/local/apache2/htdocs environment: VIRTUAL_HOST: site1.loc.test.com expose: - "80" site2: image: httpd:2.4 volumes: - site2:/usr/local/apache2/htdocs environment: VIRTUAL_HOST: site2.loc.test.com expose: - "80" 

我认为你的configuration应该是正确的,但似乎这是jwilder/nginx-proxy的预期行为。 在文件nginx.tmpl查看这些行: https : //github.com/jwilder/nginx-proxy/blob/master/nginx.tmpl#L89-L94

看来,如果find了证书,你将永远被redirect到https。


编辑:我在文档中find确认

当端口80和443被暴露时代理的行为如下:

  • 如果一个容器有一个可用的证书,端口80将redirect到该容器的443,所以HTTPS总是首选的时候可用。

您仍然可以使用自定义configuration 。 您也可以尝试在新的Dockefile中覆盖文件nginx.tmpl。

为了使这个主题保持最新,jwilder / nginx-proxy同时引入了一个标志: HTTPS_METHOD=noredirect ; 被设置为环境variables。

在github上进一步阅读