fre*_*kre 7 nginx reverse-proxy
我正在运行一个 HTTP 服务并希望将nginx
SSL 终止放在前面。这可以通过两种方式完成;要么作为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
等)和其他配置。
我试图了解这两种方法之间的优缺点,特别是我有以下问题:
这两种方法是否会泄漏有关后端服务的更多信息?例如,是否ip-for-backend-service
可见?
这两种方法都能更好地抵御攻击吗?我想如果后端服务有缺陷,它会通过这两个选项可见/可利用吗?
哪个选项更有效?我认为该stream
选项可能会更快,因为它只是路由流量并且中间没有 http 服务器?
使用这两种方法,上游 IP 地址将保持隐藏。
至于其余的:
stream
肯定更快,因为执行的代码更少。然而,两者都是精心编写的 C 代码,当您将其与网络延迟进行比较时,差异可能并不明显。与stream
上游日志将只包含一个客户端 IP 地址(代理服务器的地址)。这可以通过proxy_bind指令更改,但需要额外的网络设置。另一方面X-Forwarded-For
,在http
设置中添加标题很简单:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Run Code Online (Sandbox Code Playgroud)与stream
手动配置上游服务器需要考虑传入连接的安全性:例如Tomcat的需要加入的scheme="https"
和secure="true"
所述上<Connector>
元件。使用http
代理和X-Forwarded-Proto
标头,上游服务器可以决定是否在每个连接的基础上使用HTTP
或HTTPS
使用。
设置的安全性问题非常基于意见:
http
代理,您可以限制将被代理的 URI 路径,因此您不会向公众公开您网站的管理部分, 归档时间: |
|
查看次数: |
2611 次 |
最近记录: |