文章摘要 MarioGPT
加载中...|
一、场景说明
当服务器上部署多个应用时,每个应用通常会占用独立端口:
- 图书管理系统:8001 端口
- 文件管理系统:8002 端口
访问方式如下:
- localhost:8001
- localhost:8002实际对外访问时需要使用:
- http://xxx.com:8001
- http://xxx.com:8002而 HTTP 默认 80 端口、HTTPS 默认 443 端口同一时间只能被一个程序占用,无法直接给多个应用分别使用。 这时就需要使用 Nginx 反向代理 + 端口转发 来统一入口、按域名分发请求。
二、Nginx 端口转发原理
Nginx 统一监听 80 端口,当 HTTP 请求到达时:
- 根据请求中的域名(Host)匹配配置文件中的
server_name - 根据匹配结果,将请求转发到对应后端应用的端口
- 用户无需输入端口,直接通过域名访问不同系统
示例:
- 访问
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;
}
}Nginx反向代理与端口转发详解https://www.t00ls.cc/posts/blog/0331
赞赏博主
评论 隐私政策
