我通过反向代理(在Ubuntu服务器上)将Apache和Meteor都安装在NginX后面。 Apache直接映射为baseURL(www.mydomain.com/),Meteor映射为子文件夹(www.mydomain.com/live/)。
我遇到的问题是我的Meteortesting(在端口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进行testing时,没有find这些文件。
解决问题的最好方法是什么? 系统pipe理不是我的特长,而Meteor是我在服务器端JavaScript的第一次入侵。 所以我甚至不知道这是否可以解决,如果是的话,如果这是通过服务器configuration,meteorconfiguration或编程。
编辑:在meteor0.4.0新的“绝对url”包修正了问题!
http://docs.meteor.com/#absoluteurl
在流星0.4.0新的“绝对的URL”包解决了这个问题。
你为什么在你的<head>
包含脚本和样式? 包含在流星项目目录中的任何东西,无论是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>
原谅我,如果我误解了这个问题。