项目需求
由于公司公网IP有限,现要通过反向代理把请求转发到内网,要支持HTTP/TCP等协议。接下来在nginx.conf添加如下配置
HTTP反向代理
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
tcp_nodelay on; #边接边传
keepalive_timeout 65;
gzip on;
autoindex on; #开启nginx目录浏览功能
autoindex_exact_size off; #文件大小从KB开始显示
autoindex_localtime on; #显示文件修改时间为服务器本地时间
upstream backend {
server 172.19.0.15:80;
}
server {
listen 80;
server_name localhost;
chunked_transfer_encoding on;
client_max_body_size 100000000m;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 1800;
location / {
proxy_redirect off;
proxy_pass http://backend;
}
}
}
TCP反向代理
stream {
upstream backend {
# hash $remote_addr consistent;
server 72.19.0.5:3306;
}
server {
listen 3306;
# proxy_connect_timeout 1s;
# proxy_timeout 3s;
proxy_pass backend;
}
}
docker stack部署
编写yml
services:
proxy:
image: nginx:latest
container_name: sg-proxy
restart: always
networks:
- ng-net
ports:
- 80:80
- 3307:3306
volumes:
- ng-log:/var/log/nginx
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
placement:
constraints:
- node.hostname == user
configs:
- source: nginx-conf
target: /etc/nginx/nginx.conf
configs:
nginx-conf:
file: ./nginx.conf
my_other_config:
external: true
volumes:
ng-log:
networks:
ng-net:
external:
name: sg-net
docker stack启动
docker stack deploy -c docker-compose.yml px