繁体   English   中英

使用wordpress和mysql容器的Docker Nginx反向代理错误网关

[英]Docker Nginx Reverse Proxy Bad Gateway using wordpress and mysql containers

我也搜索其他问题,但它们不适合我。 Docker nginx反向代理提供“ 502 Bad Gateway”docker nginx 502 Bad Gateway

在我的情况下,我将docker-ce安装到我的个人VPS服务器上,如下所示:

Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Wed Jun 20 21:43:51 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Wed Jun 20 21:42:00 2018
  OS/Arch:      linux/amd64
  Experimental: false

然后

拉标准最新版本的wordpress, mysqljwilder/nginx反向代理

并使用给定的标准代码

MYSQL:

docker run --name myweb_com_mysql -v /opt/docker-volumes/myweb_com_mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD="myweb41#D_fG" --restart unless-stopped -d mysql

WordPress的

docker run --name myweb_com_wordpress --link myweb_com_mysql:mysql -p 127.0.0.1:48010:80 -v /opt/docker-volumes/myweb_com_wordpress:/var/www/html -e VIRTUAL_HOST="myweb.com,www.myweb.com" --restart unless-stopped -d wordpress

和NGINX REVERSE PROXY:

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

怎么了

问候

杰森·怀尔德(Jason Wilder)在他的README.md写了它:

用法

要运行它:

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

然后使用env var VIRTUAL_HOST=subdomain.youdomain.com启动要代理的任何容器

$ docker run -e VIRTUAL_HOST=foo.bar.com ...

我看到您以相反的顺序放置了命令,最后从nginx-proxy开始。 因此,它不起作用。

一个小小的旁注:我对杰森所做的社区工作深表敬意。 但是到了某个时候,我本人停止使用他的nginx-proxy而开始使用简单的nginx映像,在我的DevOps流程中即时为其添加配置。 原因是/var/run/docker.sock映射到容器内部存在巨大的安全风险 另一个原因是当时nginx-proxy不太稳定,并且没有将特定的内容转发到我的容器(例如Jira的某些标头)。 不知道它现在如何工作,我的DevOps使用我自己的解决方案已经足够稳定,而且我永远也不会暴露带有上述安全风险的产品/测试/登台环境。

无论如何。 我生成的文件类似于myweb.conf ,其中包括:

server {
  server_name myweb.com;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://myweb:80;
  }
}

通知proxy_pass http://myweb:80; -如果容器在同一网络上,nginx的/etc/hosts还有其他容器。 但是我通常是从正在运行的容器中获取IP来生成conf文件。 安全胜过遗憾。

然后我启动一个nginx容器并在其中添加文件。 通常我用docker-compose做到这一点:

version: '3.4'

services:
  service-nginx:
    image: nginx:latest
    container_name: service-nginx
    restart: always
    volumes:
      - ${nginx_basepath}/nginx.conf:/etc/nginx/nginx.conf
      - ${nginx_basepath}/conf.d/:/etc/nginx/conf.d/
    ports:
      - "80:80"

我将myweb.conf保存到${nginx_basepath}/conf.d/ ,它会自动出现在nginx配置中,因此nginx知道了。 之后,nginx只需要重新加载docker exec -i service-nginx nginx -s reload

祝好运!

您好,据我所知-不建议使用链接,建议您创建自己的网络

https://docs.docker.com/network/links/#connect-using-network-port-mapping

希望对您有所帮助

在此处输入链接说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM