如果你有一台VPS虚拟机, 而且已经在上面跑了一个网站, 现在你想在同一台虚拟机上再跑另一个网站, 但是你的VPS只开了80和443两个端口, 其它端口你不能开. 或者说,你的虚拟机可以开别的端口, 但是你觉得把网站跑在其它端口太LOW了, 别人一看到有端口的链接估计都不敢点. 所以, 问题来了, 怎么在同一个80端口或者443端口里面同时跑多个网站(或者服务)呢?
今天我来介绍一个超级好的docker 容器镜像 Nginx-proxy
https://github.com/jwilder/nginx-proxy
为什么要介绍这个docker 版的而不是直接介绍 Nginx 本身呢? 因为我用的是这个, 我的大部分服务都在docker 里运行, 就算不是在docker 里运行的, 我也有办法和 nginx-proxy 一起使用. nginx-proxy 支持多服务, SSL 证书自动设置与更新, 而且还支持负载平衡, 实在是太方便了, 不需要自己去研究 nginx 的反向代理设置.
今天我先介绍在80端口实现多个网站. 之后如果有需要, 我再介绍如何让你的网站支持 HTTPS (SSL).
以下是视频中用到的代码
sudo docker network rm feng-net sudo docker network create feng-net sudo docker rm -f nginx-proxy sudo docker run -p 80:80 -p 443:443 \ -d \ --name nginx-proxy \ --network feng-net \ --network-alias nginx-proxy-host\ -v /usr/share/nginx/html \ -v /etc/nginx/vhost.d \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ jwilder/nginx-proxy sudo docker rm -f www sudo docker run \ -d \ -e VIRTUAL_HOST=www.fengnz.tk \ --network feng-net \ --network-alias www-host \ --name www \ -p 81:80 \ nginxdemos/hello sudo docker rm -f bbs sudo docker run \ -d \ -e VIRTUAL_HOST=bbs.fengnz.tk \ --network feng-net \ --network-alias bbs-host \ --name bbs \ -p 82:8000 \ crccheck/hello-world sudo docker run --name web-test1 -p 80:80 -d --rm nginxdemos/hello sudo docker run --name web-test2 -p 80:8000 -d --rm crccheck/hello-world