我在后端服务器应用程序前面设置了HAProxy以启用HTTPS.我已经读过我需要设置的内容X-Forward-Proto https.
在haproxy.cfg文件中,我尝试在前端执行以下操作:
frontend haproxy
bind :8443 ssl crt frontend/server.pem
reqadd X-Forwarded-Proto:\ https
default_backend my-backend
Run Code Online (Sandbox Code Playgroud)
这似乎使它工作 - 例如,我可以登录到我的后端服务器并导航到不同的页面.如果我没有proto选项,我只能登录但不能导航到任何其他页面.
现在我在后端添加选项(从前端删除):
backend my-backend
http-request add-header X-Forwarded-Proto https if { ssl_fc }
server my-backend 127.0.0.1:9000
Run Code Online (Sandbox Code Playgroud)
它也有效,我可以导航我的后端服务器应用程序中的不同页面.
那么这是正确的方法呢?在前端或后端还是没关系?
没关系.当你有多个后端时,通常在前端执行此操作是有意义的.
您也可以http-request set-header X-Forwarded-Proto在前端使用,而不是使用reqadd.
这些req*指令的功能要比http-request后者的功能要大得多,因此后者是首选,但是有一个重要的原因,你应该更喜欢它,这里以及为什么你应该使用set-header而不是add-header:你不希望客户端能够伪造标题只有代理应该注入.对于非https前端,还应该http-request set-header X-Forwarded-Proto http使上游头不可能出错.该add-header选项reqadd同样不会删除任何同名的现有标头set-header.
| 归档时间: |
|
| 查看次数: |
5440 次 |
| 最近记录: |