Drupal 8幕后花絮

时间:2018-08-12 17:25:16

标签: drupal drupal-8

我有一个Drupal 8网站。 我正在使用Kong作为它的反向代理,以使我能够在服务器上运行其他内容。

我的网站配置为https,但是Kong将其转发到不带https的服务器。

大多数站点都可以正常运行,但是任何需要按下按钮的地方都会出错。由于某种原因,浏览器被抛出到非SSL网址。

我认为大多数URL都必须是相对的,但必须在某些地方进行设置,因为提交按钮会将浏览器推到非SSL端点。我已经检查过settings.php,但是找不到。

有人知道可能有用的设置吗?

更新1

我查看了Chrome日志并在“保留日志”上打了勾,发现我从服务器上获取了302:

请求网址:https://code.metcarob.com/user/logout 请求方法:GET 状态码:302已找到 远程地址:78.31.105.225:443 推荐人政策:降级时不推荐人

我已经检查了我的nginx配置,但没有给出任何302输出。 (出于其他原因,我确实给出了301,但此处未点击。) 为什么Drupal会向浏览器分发302,为什么这样做不遵守https?

更新2

登录按钮正在使用方法303。

请求网址:https://code.metcarob.com/user/login 请求方法:POST 状态码:303查看其他 远程地址:78.31.105.225:443 推荐人政策:降级时不推荐人

1 个答案:

答案 0 :(得分:0)

我被迫使用可怕的黑客手段来解决这个问题。

在我的Drupal 8设置文件中,我必须添加:

  

$ settings ['reverse_proxy'] = TRUE;   $ settings ['reverse_proxy_addresses'] = array($ _ SERVER ['REMOTE_ADDR']);

将reverse_proxy_addresses设置为REMOTE_ADDR可以进行欺骗,但是因为我的Kong服务器和Drupal服务器都在同一个加密的docker swarm网络中,所以我认为这不是问题。

这导致我剩下一个问题。 Kong在端口8443上运行。无法更改它,但docker容器可以暴露端口443。问题在于,这最终将发送带有值8443的X_FORWARDED_PORT头。每次Drupal中的表单提交浏览器时,它都指向8443。我发现我可以通过以下操作来覆盖它:

$ settings ['reverse_proxy_port_header'] ='X_SOMERANDOMHEADERIDONTUSE';

这使drupal忽略标题并重定向工作。