如何使用 Nginx-proxy 做反向代理实现单端口多服务(网站)

  • fennng 

如果你有一台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


发表评论

电子邮件地址不会被公开。 必填项已用*标注