Nginx反向代理可以通过多种方式实现多端口映射,以下是几种常见的方法:
# 映射端口8080到后端服务的80端口
server {
listen 8080;
server_name example.com;
location / {
proxy_pass http://backend_server:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# 映射端口8443到后端服务的443端口
server {
listen 8443;
server_name example.com;
location / {
proxy_pass https://backend_server:443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name example.com;
# 映射/app1到后端服务的8080端口
location /app1 {
proxy_pass http://backend_server:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 映射/app2到后端服务的8081端口
location /app2 {
proxy_pass http://backend_server:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# app1.example.com 映射到8080端口
server {
listen 80;
server_name app1.example.com;
location / {
proxy_pass http://backend_server:8080;
proxy_set_header Host $host;
}
}
# app2.example.com 映射到8081端口
server {
listen 80;
server_name app2.example.com;
location / {
proxy_pass http://backend_server:8081;
proxy_set_header Host $host;
}
}
server {
listen 80;
server_name example.com;
# 使用正则表达式捕获端口号
location ~ ^/port/(\d+)(/.*)?$ {
set $backend_port $1;
set $backend_path $2;
proxy_pass http://backend_server:$backend_port$backend_path;
proxy_set_header Host $host;
}
}
nginx -s reload
upstream backend_servers {
server backend1:8080;
server backend2:8080;
server backend3:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
以上配置可以根据实际需求进行调整和组合,实现灵活的多端口映射功能。