5. 公司只有一台服务器,怎么用Nginx反向代理同时跑四个Web应用还不冲突?

2026-06-12

兄弟们,今天聊个特别接地气的话题。你肯定遇到过这情况:公司预算有限,就一台破服务器,老板让你把官网、后台管理系统、客户查询平台、还有个内部协同工具全扔上去。四个应用,四个端口,四个地址,用户记不住,你维护也头大。关键是——端口一多,冲突了,这个起不来那个报错,血压直接拉满。

别慌,今天就跟你唠唠怎么用 Nginx 这个“万能门卫”把这事儿办得漂漂亮亮。你不需要成为什么架构师,照着撸就能搞定。

这事儿说白了就是“端口不够,域名来凑”

想象一下,你的服务器就像一栋只有一个大门(公网 IP)的写字楼。四个应用本来要开四个门(端口),一个门占一个端口,比如 8080、8081、8082、8083。用户访问的时候得记一串数字,比如 http://你的IP:8080,体验极差。更麻烦的是,端口要是被别的进程占了,凉凉。

Nginx 就是这栋楼的优秀保安。它站在大门前,根据用户喊的“谁呀?”(域名或者 URL 路径),把请求精准地送到对应的房间(应用)。用户感觉就像在访问四个独立的网站,比如 www.guanwang.comadmin.gongs.comquery.gongs.comtool.gongs.com,清爽得一塌糊涂。

一个真实的“草台班子”配置过程

假设你的四个应用已经在服务器上跑起来了,分别占用了本地的 3000、3001、3002、3003 端口。现在开始配置 Nginx。

第一步:装好 Nginx
Ubuntu 直接 apt install nginx,CentOS 用 yum install nginx,装完启动 systemctl start nginx,浏览器访问服务器 IP 看到欢迎页就是成了。

第二步:写配置文件
找到 /etc/nginx/sites-available/ 目录,新建一个文件,比如叫 myapps.conf,然后塞进下面的内容:

server {
    listen 80;
    server_name www.gongsi.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

server {
    listen 80;
    server_name admin.gongsi.com;

    location / {
        proxy_pass http://127.0.0.1:3001;
    }
}

server {
    listen 80;
    server_name query.gongsi.com;

    location / {
        proxy_pass http://127.0.0.1:3002;
    }
}

server {
    listen 80;
    server_name tool.gongsi.com;

    location / {
        proxy_pass http://127.0.0.1:3003;
    }
}

然后把这个文件软链接到 sites-enabled/ 目录:ln -s /etc/nginx/sites-available/myapps.conf /etc/nginx/sites-enabled/
最后检查配置并重载:nginx -t && systemctl reload nginx

第三步:搞定 DNS 解析
去你的域名管理后台,把这四个域名都做个 A 记录,指向你服务器的公网 IP。几分钟后,用户就能直接敲域名访问了,端口号完全消失。

万一只有一个域名怎么办?路径分流了解一下

要是公司就买了一个域名,比如 www.gongsi.com,那你就用路径来区分:

server {
    listen 80;
    server_name www.gongsi.com;

    location /official/ {
        proxy_pass http://127.0.0.1:3000/;
    }

    location /admin/ {
        proxy_pass http://127.0.0.1:3001/;
    }

    location /query/ {
        proxy_pass http://127.0.0.1:3002/;
    }

    location /tool/ {
        proxy_pass http://127.0.0.1:3003/;
    }
}

用户访问 www.gongsi.com/official/ 就到官网,www.gongsi.com/admin/ 就到后台。注意 proxy_pass 后面加了个斜杠 /,意思就是去掉匹配的路径前缀,如果不加的话,Nginx 会把完整路径传给后端,容易出幺蛾子。

几个你可能会踩的坑

这套方案到底好在哪?

简单、稳定、省资源。一台破 4 核 8G 的云服务器,跑四个 Java 或 Node 应用,再挂个 Nginx,负载完全扛得住。而且以后要加第五个应用,直接再加一段 server 块,重载一下就完事了,不用动原有的应用。

当然,如果公司业务量上去了,一台服务器撑不住,你就得考虑搞负载均衡、容器化或者上集群了。但那是后话,对于中小团队,这方案够用两三年。

更多方案可访问 itfangan.com,上面有各种场景的实战配置,包括 HTTPS 证书自动续期、动静分离、反向代理缓存等配置实例,直接复制粘贴就能用。

咱 IT 人,能省事就省事,别把时间耗在端口打架上。把这套整明白了,晚上下班准点走,不香吗?