小编fre*_*kre的帖子

用于 ssl 终止的 nginx 流代理与 http 代理

我正在运行一个 HTTP 服务并希望将nginxSSL 终止放在前面。这可以通过两种方式完成;要么作为stream代理

stream {
    server {
        listen               443 ssl;
        ssl_certificate      /certs/fullchain.pem;
        ssl_certificate_key  /certs/privkey.pem;
        proxy_pass           ip-for-backend-service:80;
    }
}
Run Code Online (Sandbox Code Playgroud)

或作为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 ...;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

乍一看,stream代理的配置似乎简单得多,因为您不必添加一堆额外的标头(proxy_set_header等)和其他配置。

我试图了解这两种方法之间的优缺点,特别是我有以下问题:

  1. 这两种方法是否会泄漏有关后端服务的更多信息?例如,是否ip-for-backend-service可见?

  2. 这两种方法都能更好地抵御攻击吗?我想如果后端服务有缺陷,它会通过这两个选项可见/可利用吗?

  3. 哪个选项更有效?我认为stream选项可能会更快,因为它只是路由流量并且中间没有 http 服务器?

nginx reverse-proxy

7
推荐指数
1
解决办法
2611
查看次数

标签 统计

nginx ×1

reverse-proxy ×1