即使X-Forwarded-Host
标题不存在,是否可以强制使用HTTPS网址?
更新
我们在Neo4j服务器前使用HAProxy。配置是
frontend proxy-ssl
bind 0.0.0.0:1591 ssl crt /etc/haproxy/server.pem
reqadd X-Forwarded-Proto:\ https
default_backend neo-1
当每个连接只包含一个请求时,这很有效。但是,对于使用keep-alive的Neo4j驱动程序(如Py2neo),标题仅添加到第一个请求中。
如果没有X-Forwarded-Proto
标头,生成的网址为http://host:1591
,而不是https://host:1591
。
根据HAProxy documentation,这是正常行为:
因为HAProxy的HTTP引擎不支持keep-alive,所以只支持头文件 将在第一次TCP会话请求期间传递。随后都是 标题将仅被视为数据而不会被分析。此外,HAProxy 从不接触数据内容,它会在标题末尾停止分析。
解决方法是在前端中添加option http-server-close
,因此它会强制每个请求都在自己的连接中,但如果我们可以支持keep-alive则会更好。
答案 0 :(得分:0)
将类似Apache或Nginx的东西放在Neo4j服务器前面来执行该任务。
答案 1 :(得分:0)
就py2neo而言,我可以很容易地添加一些功能来满足这种情况。如果我要为所有https连接添加X-Forwarded-Proto: https
该怎么办?如果不使用代理,会导致问题吗?