tags: docker, reverse-proxy, nginx-proxy, nginx
如果你有一台VPS虚拟机, 而且已经在上面跑了一个网站, 现在你想在同一台虚拟机上再跑另一个网站, 但是你的VPS只开了80和443两个端口, 其它端口你不能开. 或者说,你的虚拟机可以开别的端口, 但是你觉得把网站跑在其它端口太LOW了, 别人一看到有端口的链接估计都不敢点. 所以, 问题来了, 怎么在同一个80端口或者443端口里面同时跑多个网站(或者服务)呢?
今天我来介绍一个超级好的docker 容器镜像 Nginx-proxy
为什么要介绍这个docker 版的而不是直接介绍 Nginx 本身呢? 因为我用的是这个, 我的大部分服务都在docker 里运行, 就算不是在docker 里运行的, 我也有办法和 nginx-proxy 一起使用. nginx-proxy 支持多服务, SSL 证书自动设置与更新, 而且还支持负载平衡, 实在是太方便了, 不需要自己去研究 nginx 的反向代理设置.
今天我先介绍在80端口实现多个网站. 之后如果有需要, 我再介绍如何让你的网站支持 HTTPS (SSL).
以下是视频中用到的代码
[bash]
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
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
[/bash]
Feng
没有评论:
发表评论