我对nginx和docker都相当陌生
我有两个wordpress和一个nginx(分开)docker-compose.yml。 我想让nginx conainer作为我的两个wordpress的反向代理。 例如,我想转到 http://localhost/wordpressblog 或 http://localhost/wordpressphotography
我很乐意接受建议
其中一项是
var mu sync.Mutex
var wg sync.WaitGroup
// length is 197K
for i:=0;i<len(listings.Listings);i++{
wg.Add(1)
go func(){
mu.Lock()
// code execution (tested prior to adding concurrency and locking and wait group)
wg.Done()
mu.Unlock()
}()
}
wg.Wait()
这是我的Nginx配置
version: '3'
services:
wp:
image: wordpress:latest
hostname: wordpressblog
ports:
- 81:80
volumes:
- /opt/wordpress/config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
- /opt/wordpress/wp-app:/var/www/html
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: "wordpress"
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: "password"
depends_on:
- db
links:
- db
答案 0 :(得分:1)
请尝试使用Traefik(它是可识别Docker的反向代理)来代替NGinX。
您可以在Traefik on Docker for Web Developers - With bonus Let's Encrypt SSL!的“ Juan Treminio”中看到一个示例,以便自动注册您的容器并通过预定义的URL访问它们。
胡安介绍了如何解决“口舞”:
如果端口80映射到Web服务器A,则必须选择另一个端口来绑定Web服务器B和Web服务器C。
这很快就会变老,因为您必须记住http://localhost转到A,http://localhost:81转到B,http://localhost:82转到C。
他指出:
在虚拟机上,实际上不会发生此问题,因为您可以为服务器分配静态IP地址,并将其绑定到系统的主机文件(
/etc/hosts
)。
容器本质上是临时的,通常不会在主机网络上创建,而是在专用网络中使用其在特定范围内的随机IP地址创建。但是,您必须为启动的每个VM编辑/etc/hosts
,并且列表会随着您处理的项目数的增加而增加。Træfik解决了这两个问题,首先是消除了在URL中使用端口的需要,其次是完全不需要编辑
/etc/hosts
。
Traefik检测到新容器的方式是Docker专用网络:
docker network create --driver bridge traefik_webgateway
一个新的容器将自己注册到所述Traefik码头工人网络:
docker run -d --name some-mailhog \
--network traefik_webgateway \
--label traefik.docker.network=traefik_webgateway \
--label traefik.frontend.rule=Host:mailhog.localhost \
--label traefik.port=8025 \
mailhog/mailhog
URL变得简单http://mailhog.localhost。
您可以类似地注册两个Wordpress组件。
优点:无需维护 static NGiNX配置文件:任意数量的组件都可以注册其URL。
在Traefik之前,旧的方式是与NGiNX一起使用jwilder/nginx-proxy
它是Automated Nginx Reverse Proxy for Docker:
Docker提供了一个远程API,以检查容器并访问其IP,端口和其他配置元数据。此外,它还提供了实时事件API,可用于在启动和停止容器时进行通知。这些API可用于自动生成反向代理配置。
docker-gen 是一个小型实用程序,使用这些API并将容器元数据公开给模板。呈现模板并可以运行可选的Notification命令以重新启动服务。
使用docker-gen,我们可以自动生成Nginx配置文件,并在更改时重新加载Nginx。