当前位置 : 主页 > 大数据 > 区块链 >

X-Forwarded-Proto https在前端或后端(HAProxy)?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我在后端服务器应用程序前面设置了HAProxy以启用HTTPS.我已经读过我需要设置X-Forward-Proto https. 在haproxy.cfg文件中,我尝试在前端执行以下操作: frontend haproxy bind :8443 ssl crt frontend/server.p
我在后端服务器应用程序前面设置了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

这似乎使它工作 – 例如我可以登录到我的后端服务器并导航到不同的页面.如果我没有proto选项,我只能登录但不能导航到任何其他页面.

现在我在后端添加选项(从前端删除):

backend my-backend
  http-request add-header X-Forwarded-Proto https if { ssl_fc }
  server my-backend 127.0.0.1:9000

它也有效,我可以导航我的后端服务器应用程序中的不同页面.

那么这是正确的方法呢?在前端或后端还是没关系?

没关系.当你有多个后端时,通常在前端执行此操作是有意义的.

你也可以在前端使用http-request set-header X-Forwarded-Proto,而不是使用reqadd.

req *指令的功能比http-request更旧,所以后者通常是首选,但是有一个重要的原因,你应该更喜欢它,这里以及为什么你应该使用set-header而不是add-header:你不要我希望客户端能够伪造只有代理应该注入的标头.对于非https前端,您还应该http请求set-header X-Forwarded-Proto http,以便不会出现错误的上游标头. add-header选项与reqadd一样,不会删除任何现有的同名头文件,而set-header则会删除.

网友评论