• 欢迎订阅我的Youtube频道
  • 欢迎加入我的电报群

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

Youtube fennng 7个月前 (07-29) 760次浏览 0个评论

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



峰享技术 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使用 Nginx-proxy 做反向代理实现单端口多服务(网站)
喜欢 (2)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址