我正在尝试在我的EC2实例上为我的Node.js服务器设置代理,所以我可以通过http://*.amazonaws.com/node访问它,其中*是URI的其余部分.我通过使用以下命令编辑/etc/httpd/conf/httpd.conf来设置代理:
<Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /node http://*.amazonaws.com:3000 ProxyPassReverse /node http://*.amazonaws.com:3000
我的Node.js server.js文件如下所示:
var port = process.env.PORT || 3000; var host = '*.amazonaws.com' || process.env.HOST || '127.0.0.1';
因此,当我启动并运行所有内容时,我可以访问/ node,但是,Node.js的/ public目录没有被用作Document的根目录,所以我得到任何文件index.html包含404s因为它假设它在/ public目录.例如,Firebug报告了一个404的http://*.amazonaws.com/javascripts/rails.js和另外3个文件,这意味着它没有访问Node.js的/ public目录.
值得注意的是,如果我编辑index.html文件中的路径,一切正常,但我宁愿不必这样做……如果我在httpd.conf中取出ProxyPass配置,只需访问节点来自http://*.amazonaws.com:3000的服务器,它可以工作……但理想情况下,我不想这样做并能够做/节点.
我想知道的是,我的代理配置是否正确,如果没有,我该如何修复它,以便当我访问/ node时,所有请求的文件都会被自己重定向?
我同意评论者的意见,如果你使用快速静态中间件,你可能会错误配置快递.但是,如果您希望apache处理静态请求,则这是用于生成ProxyPass异常的apache配置语法:
ProxyPass /javascript/ !
您还需要确保设置了DocumentRoot,但是这应该通过任何对javascript目录的请求传递给常规apache,它将以您配置的任何方式处理对该目录的请求.