引言
本文介绍 nginx 只开放一个端口时,如何应对各种复杂业务需求。
核心技术
URL扩展及URL改写。
$request_uri : nginx自带变量,获取请求地址端口后面部分的URL。
理论说明
通过本地nginx代理,把多端口服务请求,转换成一个端口转发到服务端nginx,服务端nginx再分解成多端口对应多服务。
架构图

3. 详细说明
核心步骤:
- 本地启动多端口
- 本地转发到 /固定前缀/端口$request_uri
- 服务端拆分请求
4. 代码示例
用户本地nginx片段
server {
listen 8081;
location / {
proxy_pass http://10.10.6.2:8080/app/8081$request_uri;
}
}
server {
listen 8082;
location / {
proxy_pass http://10.10.6.2:8080/app/8082$request_uri;
}
}
服务端nginx片段
server {
listen 8080;
location ^~ /app/8081/ {
proxy_pass http://10.10.6.2:8081/;
}
location ^~ /app/8082/ {
proxy_pass http://10.10.6.2:8082/;
}
}
5. 总结
特殊场景很有用哦
附件
------------------ 但行好事莫问前程,你若盛开蝴蝶自来