本方案使用Nginx Proxy Manager作为反向代理和流量管理工具,为容器化服务提供安全可靠的流量隔离解决方案。通过该方案可以实现:
[外部用户]
|
[Cloudflare/CDN] (可选)
|
[Nginx Proxy Manager]
├── [容器服务A] (app1.example.com)
├── [容器服务B] (app2.example.com)
└── [容器服务C] (api.example.com)
使用Docker Compose部署Nginx Proxy Manager:
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
environment:
DB_SQLITE_FILE: "/data/database.sqlite"
DISABLE_IPV6: "true"
基于域名的隔离: - 为每个服务分配独立子域名(app1.domain.com, app2.domain.com) - 每个子域名指向不同的后端容器服务
基于路径的隔离(可选):
location /service1 {
proxy_pass http://service1:port;
}
location /service2 {
proxy_pass http://service2:port;
}
基本认证:
IP限制:
allow 192.168.1.0/24;
deny all;
安全头部:
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin";
add_header Content-Security-Policy "default-src 'self'";
速率限制:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
日志管理:
性能监控:
定期维护:
502 Bad Gateway:
证书问题:
性能问题:
本方案通过Nginx Proxy Manager提供了简单易用但功能强大的流量管理解决方案,特别适合中小规模容器化部署环境,兼顾了安全性和易用性。