当前位置: 网站首页 >平台公告 > nginx 同一端口

nginx 同一端口

2026-05-24 平台公告 2060

《告别端口焦虑!Nginx同一端口部署的3大实战场景》

在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!

一、基于域名的虚拟主机:一个端口,多域名共存

场景需求:同一端口(如80)下,为不同域名(如www.abc.comapi.abc.com)分配独立服务。
原理:Nginx通过server_name匹配域名,不同域名对应不同server块,实现“一域名一服务”的隔离。

配置示例

# 处理未知域名(默认拒绝)
server {
    listen 80 default_server;
    server_name _;  # 匹配所有未指定域名
    return 444;     # 主动关闭非法连接,避免暴露服务
}

# 前端网站服务
server {
    listen 80;
    server_name www.abc.com;
    root /var/www/abc-frontend;  # 前端代码目录
    index index.html;            # 默认首页
    location / {
        try_files $uri $uri/ /index.html;  # 支持前端路由刷新
    }
}

# API服务(子域名)
server {
    listen 80;
    server_name api.abc.com;
    location / {
        proxy_pass http://127.0.0.1:3000;  # 代理到后端API
        proxy_set_header Host $host;       # 传递原始域名
    }
}

关键点

  • default_server拦截非法域名,避免恶意请求
  • server_name支持通配符(如*.abc.com),适合多子域名场景

二、基于路径的反向代理:同一域名,路径分服务

nginx 同一端口

场景需求:同一域名(如example.com)下,不同路径(如/api/admin)指向不同服务。
原理:Nginx通过location块的路径匹配,将请求分发到不同后端。

配置示例

server {
    listen 80;
    server_name example.com;

    # 前端静态资源(根路径)
    location / {
        root /var/www/frontend;
        index index.html;
        try_files $uri $uri/ /index.html;  # 支持前端路由
    }

    # 后端API(/api路径)
    location /api {
        proxy_pass http://127.0.0.1:4000;
        proxy_http_version 1.1;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 管理后台(/admin路径)
    location /admin {
        root /var/www/admin;
        index index.html;
    }
}

关键点

  • location匹配优先级:精确路径 > 前缀匹配 > 正则匹配,需注意顺序
  • 避免路径重叠(如/api在前,/api/v1在后,防止覆盖)

三、基于协议的端口复用:同一端口,处理HTTP/WebSocket

场景需求:同一端口(如80)同时处理HTTP和WebSocket(如在线聊天)。
原理:通过路径或协议头区分请求类型,WebSocket需特殊配置Upgrade头。

配置示例

server {
    listen 80;
    server_name chat.example.com;

    # WebSocket服务(ws://路径)
    location /ws {
        proxy_pass http://127.0.0.1:8888;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

    # 普通HTTP服务(其他路径)
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
    }
}

关键点

  • WebSocket必须配置proxy_http_version 1.1Upgrade头,否则连接中断
  • 注意防火墙规则,确保WebSocket端口(如8888)开放

总结:Nginx同一端口部署的核心技巧

  1. 域名隔离:用default_server拦截未知域名
  2. 路径匹配:按优先级配置location,避免路径重叠
  3. 协议兼容:WebSocket需额外配置Upgrade头,确保协议握手成功

通过这三大场景,你能大幅减少端口占用,让服务器配置更简洁高效。从简单的多域名站点开始,逐步尝试路径分流和协议复用,就能解锁Nginx的“端口魔法”!

标签:

相关文章

nginx if 判断域名

《告别端口焦虑!Nginx同一端口部署的3大实战场景》在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!一、基于域名的虚拟主机:一个端口,多域名共存场景需求:同一端口(如80)下,为...

nginx 反向代理 性能

《告别端口焦虑!Nginx同一端口部署的3大实战场景》在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!一、基于域名的虚拟主机:一个端口,多域名共存场景需求:同一端口(如80)下,为...

nginx负载均衡 hash

《告别端口焦虑!Nginx同一端口部署的3大实战场景》在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!一、基于域名的虚拟主机:一个端口,多域名共存场景需求:同一端口(如80)下,为...

nginx 禁止ip段

《告别端口焦虑!Nginx同一端口部署的3大实战场景》在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!一、基于域名的虚拟主机:一个端口,多域名共存场景需求:同一端口(如80)下,为...

nginx socket负载均衡

《告别端口焦虑!Nginx同一端口部署的3大实战场景》在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!一、基于域名的虚拟主机:一个端口,多域名共存场景需求:同一端口(如80)下,为...

centos nginx自动启动

《告别端口焦虑!Nginx同一端口部署的3大实战场景》在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!一、基于域名的虚拟主机:一个端口,多域名共存场景需求:同一端口(如80)下,为...

nginx php页面空白

《告别端口焦虑!Nginx同一端口部署的3大实战场景》在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!一、基于域名的虚拟主机:一个端口,多域名共存场景需求:同一端口(如80)下,为...

nginx不同端口访问

《告别端口焦虑!Nginx同一端口部署的3大实战场景》在服务器资源有限的情况下,我们总想用最少的端口承载最多的服务。Nginx的“同一端口部署”能力,能让你用80/443等核心端口,同时处理多域名、多路径甚至多协议的服务请求。今天,我们就来拆解这三大核心场景,手把手教你配置!一、基于域名的虚拟主机:一个端口,多域名共存场景需求:同一端口(如80)下,为...