我正在尝试使用与前端服务器相同的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 webapp,在使用以下命令启动的fcgi进程中运行
./manage.py runfcgi method=threaded host=127.0.0.1 port=9030
我的问题是 - 在我的浏览器中,url,mydomain.com和sub.mydomain.com都获得了相同的Web应用程序(适用于mydomain.com的应用程序)。
似乎sub.mydomain.com的Lighttpd设置被忽略或被mydomain.com的设置覆盖。我甚至尝试在配置文件中反转两个设置的物理位置,但这也无济于事。
我确信这种配置应该是可行的。我错过了什么吗?
答案 0 :(得分:1)
行$HTTP["host"] =~ "mydomain.com"
正在进行正则表达式匹配,因此它匹配Django子域以及域。如果您使用字符串等于如下匹配,那么Django子域将不匹配。
$HTTP["host"] == "mydomain.com"
可能有更好的方法(例如,在匹配第一个虚拟主机后跳过所有其他虚拟主机的命令),但我担心我的lighttpd知识有限。