代理HTTP与express.js和Apache

我想从apache安全PHP页面。 这只能由NodeJS访问,因为authentication是从nodejs端实现的。 所以我必须在访问php页面之前创build一个代理HTT(不实现安全性)。

这是我的虚拟主机Apache:

# Virtual Hosts # <VirtualHost *:1882> ServerName localhost ServerAlias localhost DocumentRoot "${INSTALL_DIR}/www" <Directory "${INSTALL_DIR}/www/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> <Location /> Order deny,allow Allow from localhost </Location> </VirtualHost> <VirtualHost *:1882> ServerName *** ServerAlias ApplicationServer ProxyRequests Off ErrorLog "${INSTALL_DIR}/logs/app_error.log" CustomLog "${INSTALL_DIR}/logs/app_access.log" combined <Location /> ProxyPass http://localhost:3000/ retry=0 ProxyPassReverse http://localhost:3000/ Order deny,allow Allow from all </Location> </VirtualHost> 

所以架构是这样的:

Virtualhost2 apache(用于HTTPS) – > nodejs应用程序(用于提供几件事情和安全连接和会话) – > virtualhost1 apache(用于提供php文件)。

这里是我的代理HTTP使用nodejs的代码:

 // proxy.js var router = require('express').Router(); const request = require('request'); router.get('/', function (req, res) { // correct URL var proxy = request(req.url); req.pipe(proxy); proxy.pipe(res) }) module.exports = function (auth_fn) { if (auth_fn !== undefined) router.use(auth_fn); return router; } //index.js ... const auth = require("./auth.js")(app); var proxy = require("./router/proxy.js")(auth.authenticate); app.use("/locales", proxy) app.listen(port, function () { console.log(`Example app listening on port ${port}`); }) ... 

我想从“/ locales /”访问我的PHP页面

从现在开始,当访问localhost:3000 / locales / index.php时,什么也没有发生,并且代理函数没有被触发。

编辑:

这是一个代理请求旁边的apache输出:

 127.0.0.1 - - [06/Dec/2017:11:45:59 +0100] "-" 408 - 127.0.0.1 - - [06/Dec/2017:11:45:59 +0100] "-" 408 - 127.0.0.1 - - [06/Dec/2017:11:45:59 +0100] "-" 408 - 127.0.0.1 - - [06/Dec/2017:11:45:59 +0100] "-" 408 - 127.0.0.1 - - [06/Dec/2017:11:45:59 +0100] "-" 408 - 

请注意,当我从本地通过使用直接url调用页面时,一切工作正常