11

我正在我的 AWS EC2(微)实例上安装 Meteor(框架)并按照说明进行操作,在创建了一个测试项目后,我meteor在该目录上运行,给了我预期的

[[[[[ /var/www/html/meteortest ]]]]]

Running on: http://localhost:3000/

但是我无法在浏览器中导航到服务器的 localhost 以查看 hello world 示例项目。有没有办法让流星在类似的东西上工作:

http://mydomain.com/meteortest/

或者

http://mydomain.com/meteortest:3000
4

4 回答 4

11

Meteor 设置 ROOT URL 的方式是使用名为 ROOT_URL 的环境变量:

http://docs.meteor.com/#meteor_absoluteurl

所以你可以像这样运行你的 Meteor 实例: ROOT_URL="http://mydomain.com/" meteor --port 80

但是,如果您想从文件夹(如http://mydomain.com/meteortest)提供流星实例,则必须使用 nginx 转发端口(参见 Tyr 的示例)但替换以下行:

location / {

和:

location /meteortest {

并适当地更改您的 ROOT_URL。如果您仍然无法从外部访问您的域,则您可能没有为 EC2 正确设置安全组。您必须打开端口 80。有关如何执行此操作的更多信息可以在这里:http ://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/using-network-security.html

于 2012-12-05T20:29:55.217 回答
7

您可以将 nginx 设置为代理端口 3000 到您的域。就像是:

server {
  listen 80;
  server_name meteortest.mydomain.com;
  access_log /var/log/nginx/meteortest.access.log;
  error_log /var/log/nginx/tmeteortest.error.log;
  location / {
    proxy_pass http://localhost:3000;
    include /etc/nginx/proxy_params;
  }
}

请参阅http://wiki.nginx.org/HttpProxyModule了解更多信息。

但是,在端口 3000 上运行流星是一个开发环境。如果您想在生产中使用它,请运行“ meteor bundle ”,然后按照生成的 tarball 中的 README 进行操作。

于 2012-12-04T05:32:32.070 回答
4

我认为问题在于端口 3000 可能被亚马逊的防火墙阻止了。你可以看看打开它,试试 Tyr 的解决方案,或者试着用

meteor --port 80

您可能需要 root 权限(即 sudo)来执行此操作。

于 2012-12-05T00:44:25.727 回答
1

直接在端口 80 上运行将需要 root 权限,而您并不真正希望您的 Web 服务器以该权限运行 - 以 root 身份启动它并降级为普通用户是可能的,但也不是很理想,因为您可能会发现某个编程错误有时会忘记降级 privs,您不会从中看到任何错误。

在许多情况下,我真的不想/不需要运行负载均衡器来使用多核,特别是如果我在 AWS 单核 t1 或 t2 实例类型上运行,我只是根据需要对其进行扩展——因此我见过的最好的建议是简单地使用 Linux 内核进行端口转发,将端口 80 映射到端口 3000,就像这样

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp \
                          --dport 80 -j REDIRECT --to-port 3000

很好,很容易,没有其他事情可做——而且超级高效,同时在服务请求时不涉及额外的进程。

于 2015-03-11T21:39:43.677 回答