Lighttpd VirtualHost配置~基于名称的虚拟主机

时间:2020-01-09 10:40:23  来源:igfitidea点击:

问题描述:如何将lighttpd Web服务器配置为虚拟主机,以便从单个公共IP地址(基于名称的虚拟主机)为多个网站提供服务?

解决方法:虚拟托管是一种方法,例如网络服务器之类的服务器用来在同一服务器上托管多个域名,有时甚至在同一IP地址上。

有两种完成虚拟主机的基本方法。

(A) 基于名称的虚拟主机:您将多个主机名用于相同的Web服务器IP地址。
例如,域theitroad.com和theitroad.com使用称为65.111.211.111的相同IP地址。

(B) IIP地址/基于ip的虚拟主机

如何为基于名称的虚拟主机配置Lighttpd?

假设我们的设置为:

  • 公用IP地址:72.12.5.10
  • 域名:domain1.com和domain2.net
  • 默认文档根目录:/home/lighttpd/default/http
  • domain1.com的默认文档根目录:/home/lighttpd/domain1.com/http
  • domain2.net的默认文档根目录:/home/lighttpd/domain2.net/http

首先,创建所需的目录:

# mkdir -p /home/lighttpd/default/http

接下来,打开lighttpd.conf文件:

# vi /etc/lighttpd/lighttpd.conf

设置默认文档根目录:

server.document-root = "/home/lighttpd/default/http/"

设置公共IP地址:

server.port = 80
server.bind = "72.12.5.10"

在文件底部,添加:

include "domain1.com.conf"
include "domain2.net.conf"

保存并关闭文件。

创建domain1.com虚拟主机配置

创建所需的目录:

# mkdir -p /home/lighttpd/domain1.com/http
# mkdir -p /home/lighttpd/domain1.com/logs

打开/etc/lighttpd/domain1.com.conf文件:

# vi /etc/lighttpd/domain1.com.conf

添加以下配置指令:

$HTTP["host"] =~ "domain1\.com" {
            server.document-root = "/home/lighttpd/domain1.com/http"
            accesslog.filename         = "/home/lighttpd/domain1.com/logs/access.log"
}

保存并关闭文件。

创建domain2.net虚拟主机配置

创建所需的目录:

# mkdir -p /home/lighttpd/domain2.net/http
# mkdir -p /home/lighttpd/domain2.net/logs

打开/etc/lighttpd/domain2.net.conf文件:

# vi /etc/lighttpd/domain2.net.conf

添加以下配置指令:

$HTTP["host"] =~ "domain2\.net" {
            server.document-root = "/home/lighttpd/domain2.net/http"
            accesslog.filename         = "/home/lighttpd/domain2.net/logs/access.log"
}

保存并关闭文件。

重新启动lighttpd Web服务器:

# /etc/init.d/lighttpd restart

确保文档根目录归您的Web服务器用户所有,例如www-data或lighttpd:

# chown -R lighttpd:lighttpd /home/lighttpd/