首页 文章

Docker Nginx反向代理

提问于
浏览
1

我需要运行多个链接到一个MySQL容器Nginx反向代理的WordPress容器,以便轻松处理VIRTUAL_HOSTS .

这是我正在尝试做的事情(现在只有一个WP):

  • Wordpress(hub.docker.com/_/wordpress/)

  • Mysql(hub.docker.com/_/mysql/)

  • Nginx反向代理(github.com/jwilder/nginx-proxy)

我正在研究OSX,这是我在终端上运行的:

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
docker run -e VIRTUAL_HOST=wordpress.mylocal.com --name wordpress --link some-mysql:mysql -p 8080:80 -d wordpress

我的Docker运行在192.168.99.100上,这让我遇到了503 nginx / 1.9.12错误 .

然后192.168.99.100:8080按预期将我带到WordPress .

http://wordpress.mylocal.com它's not working; it' s没有重定向到192.168.99.100:8080而且我没有做错't understand what I' .

有什么建议?谢谢!

2 回答

  • 0

    首先,我建议您开始使用docker-compose,运行容器并找到错误将变得更加容易 .

    至于你的情况,似乎你应该使用VIRTUAL_PORT直接到8080的容器 .

    其次,您不能将两个容器(nginx-proxy wordpress)打包到主机上的同一端口 .

    祝好运!

  • 1

    根据您的情况,我认为最适合您的解决方案是使用正在侦听docker套接字的nginx反向代理,并将请求传递给不同的虚拟主机 .

    例如,假设您有3个WP .

    WP1 -> port binding to 81:80
    WP2 -> port binding to 82:80
    WP3 -> port binding to 83:80
    

    对于它们中的每一个,您应该使用具有要使用的虚拟主机名的docker环境变量 .

    WP1-> foo.bar1
    WP2-> foo.bar2
    WP3-> foo.bar3
    

    在这样做之后,您应该有3个不同的WP,其端口暴露在81 82 83上 .

    现在下载并启动这个nginx docker容器(反向代理)here它应该在docker socket上监听并检索端口80上的所有数据 . 当你启动WP容器和你提供的环境变量时,他将会能够检测哪个请求shouul到哪个WP实例...

    这是一个如何运行WP docker镜像的示例

    > docker run -e VIRTUAL_HOST=foo.bar1.com -p 81:80 -d wordpres:tag
    

    在这种情况下,虚拟主机将是来自http请求的虚拟主机

相关问题