文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结 投诉

一、场景说明

当服务器上部署多个应用时,每个应用通常会占用独立端口:

  • 图书管理系统:8001 端口
  • 文件管理系统:8002 端口

访问方式如下:

- localhost:8001
- localhost:8002

实际对外访问时需要使用:

- http://xxx.com:8001
- http://xxx.com:8002

而 HTTP 默认 80 端口、HTTPS 默认 443 端口同一时间只能被一个程序占用,无法直接给多个应用分别使用。 这时就需要使用 Nginx 反向代理 + 端口转发 来统一入口、按域名分发请求。

二、Nginx 端口转发原理

Nginx 统一监听 80 端口,当 HTTP 请求到达时:

  1. 根据请求中的域名(Host)匹配配置文件中的 server_name
  2. 根据匹配结果,将请求转发到对应后端应用的端口
  3. 用户无需输入端口,直接通过域名访问不同系统

示例:

  • 访问 book.memme.cn → 转发到 8001 端口的图书管理系统
  • 访问 wenjian.memme.cn → 转发到 8002 端口的文件管理系统

三、完整 Nginx 配置示例

1. 配置负载均衡池

nginx
# Demo1 负载均衡池(图书系统)
upstream book_pool {
    server 127.0.0.1:8001;
}

# Demo2 负载均衡池(文件系统)
upstream wenjian_pool {
    server 127.0.0.1:8002;
}

2.配置虚拟主机转发规则

Demo1 图书系统端口转发

server {
    listen       80;
    server_name  book.memme.cn;
    access_log logs/book.log;
    error_log logs/book.error;

    # 将所有请求转发给 book_pool 池的应用处理
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://book_pool;
    }
}

Demo2 文件系统端口转发

server {
    listen       80;
    server_name  wenjian.memme.cn;
    access_log logs/wenjian.log;
    error_log logs/wenjian.error;

    # 将所有请求转发给 wenjian_pool 池的应用处理
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://wenjian_pool;
    }
}
赞赏博主
评论 隐私政策