Nginx反向代理——一台VPS跑多个服务
跟到了这里说明你已经有一台能跑的 VPS 了——Nginx 在跑SSL 配好了浏览器访问https://你的域名能看到自己的网页。一台 VPS 只跑一个网站有点浪费。这篇讲怎么把利用率拉满——用 Nginx 反向代理一台 VPS 同时跑多个网站、多个后端服务。这不是入门内容了。前面的文章我尽量一步步走今天这篇默认你已经会基本操作已经弄好了前面的所有内容直接上干货。反向代理是什么你用代理软件上网的时候用的是正向代理——你的请求先发给代理代理帮你去访问目标网站。代理代理的是你。反向代理反过来了——用户访问你的域名请求先到 NginxNginx 根据域名把请求转发到后面真正跑着的服务。用户不知道后面跑的是什么只跟 Nginx 打交道。代理代理的是你的服务端。为什么要加这一层因为有了 Nginx 站在前面你可以让不同域名走不同服务让 Nginx 统一处理 HTTPS让后端服务不用管证书。一台 VPS 就能同时伺候多个站点。多个静态网站你有两个域名blog.example.com和portfolio.example.com都解析到同一台 VPS。Nginx 靠server_name区分请求来自哪个域名分发到不同目录。比如访问阿伟的alois.bond是看到的阿伟的博客网站然后xxx.xx同样指向这台vps但是是指向我自己的节点管理后台建目录放文件sudomkdir-p/var/www/blog /var/www/portfolioechoh1My Blog/h1|sudotee/var/www/blog/index.htmlechoh1My Portfolio/h1|sudotee/var/www/portfolio/index.htmlsudochown-R$USER:$USER/var/www/blog /var/www/portfolio写两个 Nginx 配置sudonano/etc/nginx/sites-available/blogserver { listen 80; server_name blog.example.com; root /var/www/blog; index index.html; location / { try_files $uri $uri/ 404; } }sudonano/etc/nginx/sites-available/portfolioserver { listen 80; server_name portfolio.example.com; root /var/www/portfolio; index index.html; location / { try_files $uri $uri/ 404; } }启用、reload、上 HTTPSsudoln-s/etc/nginx/sites-available/blog /etc/nginx/sites-enabled/sudoln-s/etc/nginx/sites-available/portfolio /etc/nginx/sites-enabled/sudonginx-tsudosystemctl reload nginxsudocertbot--nginx-dblog.example.com-dportfolio.example.com两个域名两个网站一台 VPS。HTTPS 一条命令全搞定。代理后端服务静态网站只是热身。反向代理真正的价值在于把浏览器请求转发到 VPS 本机跑的各种服务。比如你在 VPS 上跑了一个 Node.js API监听 3000 端口。防火墙没开 3000 端口用户直接访问不了。但可以通过 Nginx 代理——用户访问api.example.com的 80/443 端口Nginx 帮你转发到localhost:3000。配置长这样server { listen 80; server_name api.example.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }和静态站点的区别就一点没有root和index换成proxy_pass把请求转发到localhost:3000。下面几行proxy_set_header是把用户的真实 IP 和协议信息传给后端。否则后端只能看到请求来自 127.0.0.1拿不到用户真实 IP——你的日志和风控就废了。Python Flask5000 端口、Go 服务8080 端口、Java Spring Boot8080 端口换一下proxy_pass的端口就行配置模式完全一样。然后照常certbot --nginx -d api.example.com上 HTTPS。用户访问https://api.example.comNginx 解密 SSL转发到localhost:3000HTTP。后端服务不用管证书——这叫SSL 卸载Nginx 扛了加密的活后端轻装上阵。Docker 场景如果你的服务用 Docker 跑模式不变。最简单的情况——Docker 容器映射端口到本机dockerrun-d-p8080:80--namemyapp nginxNginx 照常proxy_pass http://localhost:8080和代理非 Docker 服务没区别。多容器互相通信的场景用 Docker Compose 把 Nginx 和应用容器放同一个 compose 网络里通过容器名互相访问。这块展开是另一个话题了但核心思路一样Nginx 站在前面按域名分发请求到后面的服务。踩坑速查502 Bad Gateway——Nginx 连不上后端服务。先查后端在不在跑sudo ss -tlnp | grep :3000没输出就是没启动。再查proxy_pass的端口和实际服务端口对不对。端口被占用——Nginx 启动报bind() to 0.0.0.0:80 failed (98: Address already in use)。sudo ss -tlnp | grep :80看谁占了 80 端口通常是 Apachesudo systemctl stop apache2停掉。证书不覆盖——给blog.example.com申请了证书访问api.example.com报证书错误。申请时把所有域名列上sudo certbot --nginx -d blog.example.com -d api.example.com -d portfolio.example.com。改了配置不生效——sudo nginx -t测语法sudo systemctl reload nginx重新加载。用reload不要用restartreload 不中断现有连接。你现在的架构跟完整篇你的 VPS 长这样Internet | ┌──────┴──────┐ │ Nginx │ ← 80/443处理所有请求 │ (反向代理) │ SSL 在这里卸载 └──────┬──────┘ │ ┌──────────────┼──────────────┐ │ │ │ ┌──────┴──────┐ ┌────┴────┐ ┌───────┴───────┐ │ /var/www/ │ │ Node.js │ │ Python Flask │ │ blog/ │ │ :3000 │ │ :5000 │ └─────────────┘ └─────────┘ └───────────────┘对外只开 80 和 443不同域名走不同站点或服务SSL 统一在 Nginx 层处理后端服务跑 HTTP 就行。一台 VPS 的资源被充分利用。到头了到这里基础设施部分就结束了。你走过的路域名基础 → 注册域名 → VPS 基础 → 选购 VPS → 安全加固 → DNS 解析 → 建站上线 → 多站点部署。你拥有了一个自己的域名、一台配置好的 VPS、一个 HTTPS 网站、一台 VPS 跑多个服务的能力。但这只是地基。后面还有 AI 实战篇——在 VPS 上部署 AI 对话、搭建私有知识库、统一管理 API 接口。地基打好上面盖什么都行后话咱们再聊。

相关新闻

5分钟免费激活Windows系统:KMS_VL_ALL_AIO智能激活工具完全指南

5分钟免费激活Windows系统:KMS_VL_ALL_AIO智能激活工具完全指南

5分钟免费激活Windows系统:KMS_VL_ALL_AIO智能激活工具完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活问题而烦恼吗?每次开机看到烦人的激…

2026/10/28 3:12:12 阅读更多 →
无人机软件架构详解:从飞控固件到机载自主系统

无人机软件架构详解:从飞控固件到机载自主系统

关键词:无人机、飞控、PX4、ArduPilot、uORB、MAVLink、ROS 2、EKF、串级 PID、实时系统 前言 "无人机的软件架构"这个话题,很多资料一上来就画一张分层图,然后逐层贴名词。但实际做过项目就知道:无人机的软件分层不是设计出来的,是被硬件和实时性约束逼出来的…

2026/10/25 4:20:02 阅读更多 →
【CTF-CRYPTO-教学-RSA】第五节:9位数小 n 分解攻击

【CTF-CRYPTO-教学-RSA】第五节:9位数小 n 分解攻击

背景 前面我们学的攻击手段(共模攻击、dp 泄露)都需要"额外泄露"一些信息才能下手。 但现实里很多新手 RSA 题目根本不需要任何"花活"——只要 n 选得太小,直接把 n 分解掉,私钥就到手了。 RSA 的安全性完全…

2026/10/27 4:11:53 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/1 0:24:43 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/31 10:20:19 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/31 10:20:23 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/1 1:06:58 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/31 10:30:19 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/31 9:29:43 阅读更多 →

日新闻

周新闻

月新闻