2012-02-22 48 views
0

我試圖爲不同的應用程序提供不同的子域,所有的子域都使用與前端服務器相同的Lighthtpd服務器。所有服務子域的應用程序也都與Lighthtpd在同一臺服務器上運行。使用Lighthtpd在不同的子域中提供多個應用程序

我有安裝DNS記錄如下(均爲A記錄)

mydomain.com  xx.xx.xx.xx 
sub.mydomain.com xx.xx.xx.xx 

XX.XX.XX.XX是相同爲兩個記錄。

我Lighttpd的配置文件的相關部分爲如下

$HTTP["host"] =~ "sub.mydomain.com" { 
    fastcgi.server = (
     "/ideas.fcgi" => (
      "main" => (
       "host" => "127.0.0.1", 
       "port" => "9030", 
      ) 
     ), 
    ) 

    url.rewrite-once = (
     "^(/.*)$" => "/ideas.fcgi$1", 
    ) 
} 

$HTTP["host"] =~ "mydomain.com" { 
    proxy.balance = "round-robin" proxy.server = ("/" => 
     (("host" => "127.0.0.1", "port" => 9010))) 
} 

在端口9010上運行的過程是一個Java Web應用程序,並在9030上運行的過程,是一個Django的web應用程序運行作爲一個FCGI進程開始與以下命令

./manage.py runfcgi method=threaded host=127.0.0.1 port=9030 

我的問題是 - 在我的瀏覽器都URL的,mydomain.com和sub.mydomain.com得到相同的Web應用程序(用於mydomain.com的應用程序)。

看來,Lighttpd的設置爲sub.mydomain.com要麼被忽略或設置爲mydomain.com覆蓋。我甚至嘗試顛倒配置文件中兩個設置的物理位置,但這也沒有幫助。

我相信這個配置應該是可能的。我錯過了什麼嗎?

+0

是否有一個特別的原因,你使用正則表達式匹配的主機匹配?嘗試使用'$ HTTP [「host」] ==「mydomain.com」'代替。 – Alasdair 2012-02-22 12:32:02

+0

@Alasdair感謝使用'=='似乎已經解決了這個問題。 Lighttpd仍然沒有重定向到python fcgi進程,但至少我報告的原始問題是固定的。你可以請你的評論作爲答案,所以我可以選擇它。你也有任何線索爲什麼使用正則表達式匹配會導致失敗? – Parag 2012-02-22 17:46:40

+0

我在下面添加了我的答案。希望你得到fastcgi的工作。該文檔顯示端口號爲9030而不是字符串「9030」,但這可能不是問題。 – Alasdair 2012-02-22 19:59:31

回答

1

$HTTP["host"] =~ "mydomain.com"是做了正則表達式匹配,所以它Django的子域以及域相匹配。如果您使用如下所示的字符串equals匹配,那麼Django子域將不匹配。

$HTTP["host"] == "mydomain.com" 

有可能是一個更好的辦法來做到這一點(例如一個命令跳過所有其它虛擬主機一旦你匹配的第一個),但我怕我的lighttpd的知識是有限的。

相關問題