【问题标题】:php behind nodejs proxy server without ssl没有ssl的nodejs代理服务器后面的php
【发布时间】:2019-08-03 03:05:05
【问题描述】:

我有一个使用端口 443 在“https”上运行的节点 js 应用程序。如果 URL 路径以“/blog”开头,则此应用程序充当反向代理服务器。所有 URL 以“/blog”开头的请求都被转发到 apache,而不使用 SSL 连接。但是浏览器使用 SSL 连接来连接 Nodejs。当 apache 接收到带有“http://”URL 方案的请求时,PHP 的 $_SERVER['https'] 没有设置为“on”。这导致静态资源(如 CSS、javascript 文件)的所有 URL 都以“http://”开头。

因此浏览器给出了页面通过“https”加载的错误。但是从“http://”请求资源。这会导致所有 CSS 和 javascript 文件被阻止。

现在我正在寻找一种方法来欺骗 PHP 请求来自“https”而不是“http”。我知道我可以编辑代码并将$_SERVER['https'] = 'on'; 放在每个脚本的开头。但这似乎不是解决问题的优雅方法。我想知道任何适用于每个目录的解决方案。就像一个“htaccess”文件。

【问题讨论】:

  • 为什么要投反对票?至少给我一个理由。

标签: php node.js apache https http-proxy


【解决方案1】:

确保您的反向代理服务器设置了 X-Forwarded 标头。然后在您的 apache 文档根目录中创建一个 .htaccess 文件并将以下代码放入其中。

SetEnvIf X-Forwarded-Proto https HTTPS

这仅适用于放置此文件的目录。因此,您可以将此文件放置在要将 url 方案设置为“https”的位置,而不是将其放置在文档根目录中。

【讨论】:

    猜你喜欢
    • 2017-08-23
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2015-07-30
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多