stream {
server {
listen 443 ssl;
ssl_certificate /certs/fullchain.pem;
ssl_certificate_key /certs/privkey.pem;
proxy_pass ip-for-backend-service:80;
}
}
或者作为一个HTTP代理
http {
server {
listen 443 ssl;
ssl_certificate /certs/fullchain.pem;
ssl_certificate_key /certs/privkey.pem;
location / {
proxy_pass http://ip-for-backend-service:80;
proxy_set_header ...;
}
}
}
从一瞥之下,似乎stream代理的配置要简单得多,因为您不需要添加大量额外的头部信息(如proxy_set_header等)和其他配置。
我正在尝试了解这两种方法之间的利弊,并且特别有以下几个问题:
1. 任何一种方法会泄露更多关于后端服务的信息吗?例如,ip-for-backend-service是否可见?
2. 任何一种方法能更好地防御攻击吗?我猜如果后端服务存在漏洞,那么通过这两种选项都是可见/可利用的?
3. 哪个选项更高效?我认为stream选项可能更快,因为它只是路由流量,中间没有HTTP服务器。