2012-06-07 69 views
4

我已經通過反向代理(在Ubuntu服務器上)在Nginx後面安裝了Apache和Meteor。 Apache直接映射爲baseURL(www.mydomain.com/),Meteor映射爲子文件夾(www.mydomain.com/live/)。如何在Nginx反向代理配置中更正Meteor base-url?

我遇到的問題是我的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進行測試時找不到這些文件。

解決問題的最佳方法是什麼?系統管理不是我的專長,流星是我第一次入侵服務器端JavaScript。所以我甚至不知道這是否可以解決,如果是這樣,如果是通過服務器配置,Meteor配置或以編程方式完成。


編輯:流星0.4.0新的「絕對網址」包修復了這個問題!

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

+0

由於這更多的是一種基於服務器的問題,你可能你的問題更適合在[臨站長(http://webmasters.stackexchange.com/)。 – 2012-06-08 12:21:46

+0

@adamjansch - 我會試一試,但是由於Meteor開發人員正在使用[StackOverflow](http://www.meteor.com/join-us)作爲接收反饋並與開發人員交互的方式,因此我認爲它是(現在仍然是)目前最好的方式。 – kinologik

回答

5

流星0.4.0中的新「絕對網址」包解決了這個問題。

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

+3

這不再適用,因爲已棄用Meteor.absoluteUrl()和「ROOT_URL」env變量。我嘗試設置「ROOT_URL」,雖然它確實改變了Meteor.absoluteUrl生成的URL,但它似乎對Meteor用於包含應用程序的js文件(運行捆綁版本)時所用的url沒有影響。 – SuitedSloth

+3

有完全相同的問題,但問題有點過時。你目前如何解決這個問題? – mfaerevaag

1

你爲什麼要包括在你的<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> 

原諒我,如果我誤解了這個問題。

+1

我不包括那些腳本我自己......它們被Meteor自動包括在內。在我的示例中,我使用了abc URL參數,而不是Meteor生成的複雜網格參數(即?078ed06e57d7119bc9e3386e8a5ccebc236b0042),以方便閱讀。我的錯。 – kinologik