Tag: jwilder nginx proxy

jwilder / nginx-proxy:无法将ssl与Nginx整合

我们正在设置多个网站托pipe与单一端口和jwilder / nginx代理通过SSL,我们能够部署解决scheme没有ssl和它的工作正常,但是当我们试图把它与SSL失败的HTTPs呼叫。 我们的docker-compose文件如下: 泊坞窗,compose.yml site1: build: site1 environment: VIRTUAL_HOST: site1.domainlocal.com VIRTUAL_PROTO: https restart: always site2: build: site2 environment: VIRTUAL_HOST: site2.domainlocal.com VIRTUAL_PROTO: https restart: always site3: build: site3 environment: VIRTUAL_HOST: site3.domainlocal.com VIRTUAL_PROTO: https restart: always nginx-proxy: image: jwilder/nginx-proxy:alpine ports: – "80:80" – "443:443" volumes: – /var/run/docker.sock:/tmp/docker.sock:ro – certs:/etc/nginx/certs:ro restart: always privileged: true PS:“certs”文件夹保存在与docker-compose文件相同的文件夹中。 使用openssl使用自签名证书 文件夹结构是这样的: […]

如何使Docker容器看到真正的用户IP?

问题 在nginx-proxy Docker容器(下面的更多信息)里面,我总是看到每个连接都有相同的IP地址: 172.18.0.1 (这是nginx-proxy网关)。 例如: nginx.1 | www.my-site.tld 172.18.0.1 – – [28/Nov/2017:17:22:21 +0000] "GET /some/path HTTP/2.0" 200 46576 "https://www.my-site.tld/some/path" "Mozilla/5.0 (Linux; Android 4.4.2; PSP5507DUO Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 YaBrowser/17.10.0.446.00 Mobile Safari/537.36" 无论是从外部networking,本地机器还是从服务器(主机)本身发出请求,IP地址始终为172.18.0.1 。 我需要的是看到真正的客户端IP。 尝试修复 我search了很多,尝试了不同的解决scheme,但都没有为我工作。 我尝试了以下内容: 禁用firewalld(在这种情况下什么都不起作用,当然iptables是空的)。 使用–userland-proxy=false (没有运气); 使用–net=host (根本不是解决scheme,也不工作)。 相关链接: https://github.com/jwilder/nginx-proxy/issues/130 https://github.com/jwilder/nginx-proxy/issues/133 那么,有什么想法? 似乎是iptables路由问题或内部的Docker错误。 无论如何,它肯定与Docker有关,因为以下显示正确的远程用户IP: [root@server]# nc -lv 12345 […]

Docker的nginx代理与docker-compose v1一起工作,但不是v2?

我正在尝试为我的Docker容器设置一个nginx代理来使用简单的子域而不是端口。 我喜欢用docker-compose来启动我的容器,因为我一般对docker很陌生,所以我马上开始使用v2格式。 我花了相当长的时间弄清楚为什么这个非常stream行,看似简单的使用nginx代理容器不适合我。 事实certificate,这与我使用docker-compose v2有某种关系。 我将发布我第一次使用的docker-compose.yml文件,由于某种原因,这些文件不工作: version: '2' services: nginx-proxy: image: jwilder/nginx-proxy:alpine container_name: nginx-proxy network_mode: bridge ports: – 80:80 – 443:443 volumes: – /var/run/docker.sock:/tmp/docker.sock:ro environment: – ENABLE_IPV6=true – DEFAULT_HOST=domain.com whoami: image: jwilder/whoami network_mode: bridge environment: – VIRTUAL_HOST=whoami.local 这是jenkins容器的例子来testing它: version: "2" services: jenkins: image: jenkins:2.46.2-alpine restart: always hostname: jenkins.domain.com network_mode: bridge expose: – 8080 – 50000 […]

如何使用docker-compose v2join默认桥接networking?

我尝试设置一个nginx代理容器,通过端口80上的子域来访问我的其他容器,而不是特殊的端口。 你可以猜到,我无法得到它的工作。 我对docker本身是一种新鲜的感觉,发现编写docker-compose.yml文件对我来说更加舒适,所以我不必经常编写长的docker run …命令。 我认为在启动容器方面没有任何区别,无论是用docker还是docker-compose 。 然而,我注意到的一个区别是,用docker启动容器不会创build任何新的networking,但是使用xxx_default docker-compose之后会有一个xxx_defaultnetworking。 我读过不同networking上的容器不能互相访问,也许这可能是nginx-proxy不会将请求转发到其他容器的原因。 然而,我无法find一种方法来configuration我docker-compose.yml文件,而不是创build任何新的networking,而是join默认桥networking,如docker run 。 我尝试了以下,但它导致了一个错误,说我不能像这样join系统networking: networks: default: external: name: bridge 我也尝试了network_mode: bridge ,但这似乎没有任何区别。 如何编写docker-compose.yml文件来创build一个新的networking,或者根本不可能? 奖金问题: docker和docker-compose之间是否还有其他区别docker-compose我应该知道?

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

我通过boot2docker在osx上使用boot2docker 。 我有2台主机: site1.loc.test.com和site2.loc.test.com指向了site1.loc.test.com主机的ip地址。 两者都应该可以通过80和443端口。 所以我使用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"