当前位置 : 主页 > 网页制作 > Nodejs >

Node.js通过Amazon EC2上的Apache进行代理

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在尝试在我的EC2实例上为我的Node.js服务器设置代理,所以我可以通过http://*.amazonaws.com/node访问它,其中*是URI的其余部分.我通过使用以下命令编辑/etc/httpd/conf/httpd.conf来设置代理:
我正在尝试在我的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,它将以您配置的任何方式处理对该目录的请求.

网友评论