没有ssl的nodejs代理服务器后面的php

问题描述 投票:0回答:1

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

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

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

php node.js apache https http-proxy
1个回答
1
投票

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

SetEnvIf X-Forwarded-Proto https HTTPS

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

© www.soinside.com 2019 - 2024. All rights reserved.