如何在NginX反向代理配置中更正Meteor base-url?

时间:2012-06-07 16:48:40

标签: javascript nginx reverse-proxy meteor base-url

我已经通过反向代理(在Ubuntu服务器上)在NginX后面安装了Apache和Meteor。 Apache直接映射为baseURL(www.mydomain.com/),Meteor映射为子文件夹(www.mydomain.com/live/).

我遇到的问题是我的Meteor测试(在端口3000处按预期工作)在NginX后面停止工作,因为每个引用(CSS,Javascript,模板)都是baseURL的绝对值。

<html>
<head>
  <link rel="stylesheet" href="/live.css?abc">
  <script type="text/javascript" src="/packages/underscore/underscore.js?efg"></script>
  ...
  <script type="text/javascript" src="/template.live.js?hij"></script>
  <script type="text/javascript" src="/live.js?klm"></script>
</head>

显然,由于Apache是​​在baseURL上映射的,因此在通过NginX进行测试时找不到这些文件。

解决问题的最佳方法是什么?系统管理不是我的强项,Meteor是我在服务器端javascript的第一次入侵。所以我甚至不知道这是否可以解决,如果是,如果是通过服务器配置,Meteor配置或以编程方式完成的。


编辑:Meteor 0.4.0中新的“absolute-url”软件包解决了这个问题!

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

2 个答案:

答案 0 :(得分:5)

Meteor 0.4.0中新的“absolute-url”软件包解决了这个问题。

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

答案 1 :(得分:1)

为什么在<head>使用Meteor包含脚本和样式?您的meteor项目目录中包含的任何内容,无论是js,html还是css,都会捆绑在一起并提供给客户端,而不会包含在<link><script>的HTML中。

如果您必须在<head>中包含内容,为什么不使用包含子文件夹的绝对路径?

<html>
<head>
  <link rel="stylesheet" href="/live/live.css?abc">
  <script type="text/javascript" src="/live/packages/underscore/underscore.js?efg"></script>
  ...
  <script type="text/javascript" src="/live/template.live.js?hij"></script>
  <script type="text/javascript" src="/live/live.js?klm"></script>
</head>

如果我误解了这个问题,请原谅我。