我已经通过反向代理(在Ubuntu服务器上)在NginX后面安装了Apache和Meteor。Apache直接映射为baseURL(www.mydomain.com/),Meteor映射为子文件夹(www.mydomain.com/live/)。
我遇到的问题是我的 Meteor 测试(在端口 3000 上按预期工作)停止在 NginX 后面工作,因为每个引用(CSS、Javascript、template)对 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中新的"绝对网址"包解决了这个问题!
http://docs.meteor.com/#absoluteurl
Meteor 0.4.0 中新的"绝对网址"包修复了这个问题。
http://docs.meteor.com/#absoluteurl
你为什么要在 Meteor 的<head>
中包含脚本和样式? 您的 meteor 项目目录中包含的任何内容,无论是 js、html 还是 css,都将被捆绑并提供给客户端,而不会包含在您的 HTML 中,<link>
和 <script>
。
如果您必须在<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>
如果我误解了问题,请原谅我。