2012-02-22 67 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的知识是有限的。

相关问题