如何更正 NginX 反向代理配置中的 Meteor 基本网址

How can I correct the Meteor base-url in a NginX reverse-proxy configuration?

本文关键字:Meteor 配置 NginX 何更正 代理      更新时间:2023-09-26

我已经通过反向代理(在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>

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