今天在研究利用Ngxin转发多域名的时候,发现了一个Nginx-proxy的项目,原理也是利用反向代理转递流量,但是这至少是个项目,而且一次配置方便使用,比较方便。

什么是nginx-proxy?

nginx-proxy 启动一个容器来运行 nginx 和 [docker-gen](https://github.com/jwilder/docker-gen)。 在主机上的容器启动和停止时 docker-gen 会生成 nginx 反向代理配置并且重新加载 nginx。

可以参考 Automated Nginx Reverse Proxy for Docker 了解用 nginx-proxy 的原因。

使用方法

启动 nginx-proxy 容器:

$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy 然后,任何你希望代理的容器,在启动时都设置一个环境变量 VIRTUAL_HOST=subdomain.youdomain.com
$ docker run -e VIRTUAL_HOST=foo.bar.com ...

一个具体的例子:

docker run -d -e VIRTUAL_HOST=2048.anysun.win alexwhen/docker-2048:latest

Nginx-proxy在任何容器启动的时候,会检查是否存在VIRTUAL_HOST变量,如果有这个变量则把对应域名的流量转到这类去。这样ngxin的反向代理一次配置可以永久使用。

被代理的容器必须 expose 被代理的端口,可以通过在 Dockerfile 里面使用 EXPOSE 指令或者在 docker run 时使用 –expose 参数。

与Forsaken-mail的冲突

但是我初衷是想解决Forsaken的问题,但是我不论怎么处理,就是存在问题。具体的原因我就无法说明了。

chrome_2018-07-30_14-42-27.png

看着这个503真是仇人啊。


备注几条命令:

lsof -i :80   查看80端口被什么程序占用
netstat -an | grep :80  查看80端口的是否已在使用中,可验证使用该端口的服务是否已正常运行
netstat -tunlp | grep :80  查看80端口是被哪个服务使用着
[root@www.linuxidc.com log]# netstat -tunlp | grep 80
tcp        0      0 :::80                       :::*                        LISTEN      1013/httpd
netstat -tunlp | grep : 所有端口占用情况

目前来看,Docker对我来说适用于在小鸡上搞各种东西,避免破环主机环境,长期保证项目的稳定。

但是对于做站来说,需要设置的东西太多,目前成型的项目也比较少。比如现在HTTPS啥的没法进一步解决。

Last modification:March 4, 2019
如果觉得我的文章对你有用,请随意赞赏