nginx配置端口转发(docker-compose方式、包括TCP转发和http转发)
http端口转发
docker-compose.yml文件(示例转发geoserver服务)
services:nginx:image: nginx:latestcontainer_name: nginx-proxy-geoserverports:- "18080:18080"volumes:- ./nginx.conf:/etc/nginx/nginx.confrestart: unless-stopped
nginx.conf文件
events {worker_connections 1024;
}http {server {listen 18080;location /geoserver/ {proxy_pass http://目的ip:目的端口/geoserver/;proxy_set_header Host 目的ip:目的端口;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_redirect http://目的ip:目的端口/ http://$host:目的端口/;}}
以上配置达到的目的是将目的ip的目的端口映射到本机的18080端口,达到本机18080端口转发到目的ip的目的端口。(监控的是本机的18080端口)
TCP端口转发(例如mysql 、postgres)
docker-compose.yml文件
services:nginx:image: nginx:latestcontainer_name: nginx-proxy-pgports:- "15432:15432"volumes:- ./nginx.conf:/etc/nginx/nginx.confrestart: unless-stopped
nginx.conf文件
events {worker_connections 1024;
}stream {server {listen 15432;proxy_pass 目的ip:目的端口;proxy_timeout 30s;proxy_connect_timeout 10s;}
}
以上配置达到的目的是将目的ip的目的端口映射到本机的15432端口,达到本机15432端口转发到目的ip的目的端口。(监控的是本机的15432端口)