apache 虚拟主机 别名 Apache服务器
apache怎么配置localhost的虚拟主机
修改 hosts文件
1
不管你用的是什么系统,windows, mac,电脑上都会有一个 hosts文件,修改这个文件,可以改变主机名所对应的 ip地址。比如你安装了 Web开发环境(MAMP或 WAMP),启动环境以后,访问 你就会打开环境的默认的目录,这个 localhost就是在 hosts文件里定义的,它所指向的 ip地址是 127.0.0.1,这个 ip地址表示本地的你正在使用的这台电脑,了解详细的内容,可以搜索一下:)
修改这个 hosts文件,我们可以手工的去指定任何主机名指向任何的 ip地址,当然这个设置只影响你自己的电脑,比如我们可以随便造一个域名,比如 hello.com,让这个域名指向你的电脑,也就是 127.0.0.1这个 ip地址。这样你在浏览器中请求 hello.com,打开的就是你在本地电脑上搭建的环境所指定的目录里的东西。为了测试 apache的虚拟主机功能,你可以去虚拟几个这样的域名,这样在创建虚拟主机的时候,你可以让这些域名打开各自的目录。下面,我们先去修改这个 hosts文件。
1.找到 hosts文件,windows系统是在 Windows\System32\Drivers\etc这个目录下,Mac系统是在/etc/hosts,找到以后可以使用文本编辑软件打开它。
2.在 hosts文件里,新的一行上,先输入 ip地址 127.0.0.1,然后空格,再输入一个主机名,这个主机名可以随便,比如 hello.com,这样访问 hello.com就会打开在你的电脑上的网站了。另起一行,再去定义一条,127.0.0.1 hola.com。
3.保存修改之后的 hosts文件,然后启动在本地上的 Web环境,打开浏览器,在地址栏上输入 hello.com,还有 hola.com,看看打开的是不是你在本地上的内容。现在,你看到的应该跟你使用 打开的是一样的东西。
END
配置 Apache虚拟主机
现在,我们虚拟了两个域名,让它们指向了本地的电脑,访问它们,打开的是同一个目录里的内容,下面这个练习,我们通过修改 Apache的配置文件,让访问不同域名的时候,打开的是不同的目录。你首先要判断一下配置 Apache虚拟主机的配置文件,一般是在 httpd.conf这个主配置文件里面,不过,很多环境都会单独把虚拟主机放在一个配置文件里面,然后在 httpd.conf文件里指定一下,包含这个单独配置虚拟主机的文件。
1.找到配置虚拟主机的配置文件,如果你用的是 WAMP搭建的环境,先找到并打开 httpd.conf,在这个文件里,搜索# Virtual hosts,它下面有一行代码,#Include conf/extra/httpd-vhosts.conf...你可以去掉它前面的#,这样,Apache启动以后,也会去加载这个httpd-vhosts.conf配置文件,这样做的好处就是可以保持 Apache相关设置的整洁。当然,你完全可以在主配置文件 httpd.conf里面去设置虚拟主机。
2.打开 httpd-vhosts.conf这个文件,没有这个文件也可以去创建一个,或者直接在 httpd.conf文件里面去配置虚拟主机。配置虚拟主机的东西应该像这样:
3.应该有两段这样的代码,每一段都是在配置一个虚拟主机,你可以复制其中的一段,然后粘贴到文件的最下面。再根据自己的需要去修改这段代码。理解它的意思,ServerAdmin就是网站的管理员的邮箱,DocumentRoot是虚拟主机的主目录,也就是访问这个虚拟主机所打开的那个目录,这个目录你可以自己去指定,要注意的是,你需要先去创建这个目录,然后再在这里去指定这个目录的位置。ServerName是主机名,比如之前我们虚拟的那个主机名 hello.com,ServerAlias是主机的别名,你可以指定一个其它的主机名,访问它的时候也会打开这个虚拟主机的目录里的东西。ErrorLog是错误的日志,也就是发生错误的时候,会把错误记录到哪个文件里。CustomLog是虚拟主机访问的日志。
这样自己新添加的虚拟主机看起来应该像这样:
3
4.在浏览器里打开 hello.com,访问的是这个虚拟主机的配置里 DocumentRoot所指定的/Applications/MAMP/htdocs/hello这个目录里的东西,你可以在这个目录里面放点东西,比如一个 WordPress或者 Drupal的网站等等。
注:配置虚拟主机的时候,第一个虚拟主机是默认的,你需要留着,配置自己的虚拟主机,可以从第二个开始配置,也就是第二段<VirtualHost>代码。
Apache 虚拟主机里的 ServerName 指令
虚拟主机是将多台网站部署在一台物理服务器上的技术,这使得服务器能够同时为多个域名提供服务。这种部署方法可以是基于IP,也可以是基于域名。
在基于域名的虚拟主机中,ServerName指令用于设置用于唯一标识特定虚拟主机的请求方案、主机名和端口。它与ServerAlias指令配合使用,以确保虚拟主机的唯一性。
ServerName指令的用途之一是与UseCanonicalName设置结合使用。当此设置非默认时,它用于创建指向自身重定向的URL。
当配置Web服务器时,如果您的服务器名称是,但也有DNS别名,并且希望使用后者标识服务器,则您需要设置ServerName指令。
ServerName指令可以在服务器定义中的任何位置使用。重要的是要理解,每个出现都会覆盖前一个出现。如果未指定ServerName,服务器将尝试通过向操作系统查询系统主机名来推断客户端可见的主机名,如果失败,则对系统上存在的IP地址执行反向查找。
如果未在ServerName指令中指定端口,服务器将使用传入请求中的端口。为了确保可靠性和可预测性,建议明确指定主机名和端口。
在使用基于域名的虚拟主机时,ServerName指定的主机名必须出现在请求的Host:标头中以匹配该虚拟主机。
在服务器部署于SSL设备之后的场景中,例如反向代理、负载均衡器或SSL卸载设备,您需要在ServerName指令中明确指定客户端连接的https://方案和端口号。这样做能确保服务器生成正确的自引用URL。
总结而言,ServerName指令对于确保虚拟主机在Apache服务器上的正确标识至关重要。合理配置此指令有助于提高服务器的可维护性、安全性和用户体验。
如何配置 Apache 的虚拟主机
配置 Apache虚拟主机
现在,我们虚拟了两个域名,让它们指向了本地的电脑,访问它们,打开的是同一个目录里的内容,下面这个练习,我们通过修改 Apache的配置文件,让访问不同域名的时候,打开的是不同的目录。你首先要判断一下配置 Apache虚拟主机的配置文件,一般是在 httpd.conf这个主配置文件里面,不过,很多环境都会单独把虚拟主机放在一个配置文件里面,然后在 httpd.conf文件里指定一下,包含这个单独配置虚拟主机的文件。
1.找到配置虚拟主机的配置文件,如果你用的是 WAMP搭建的环境,先找到并打开 httpd.conf,在这个文件里,搜索# Virtual hosts,它下面有一行代码,#Include conf/extra/httpd-vhosts.conf...你可以去掉它前面的#,这样,Apache启动以后,也会去加载这个httpd-vhosts.conf配置文件,这样做的好处就是可以保持 Apache相关设置的整洁。当然,你完全可以在主配置文件 httpd.conf里面去设置虚拟主机。
2.打开 httpd-vhosts.conf这个文件,没有这个文件也可以去创建一个,或者直接在 httpd.conf文件里面去配置虚拟主机。配置虚拟主机的东西应该像这样:
3.应该有两段这样的代码,每一段都是在配置一个虚拟主机,你可以复制其中的一段,然后粘贴到文件的最下面。再根据自己的需要去修改这段代码。理解它的意思,ServerAdmin就是网站的管理员的邮箱,DocumentRoot是虚拟主机的主目录,也就是访问这个虚拟主机所打开的那个目录,这个目录你可以自己去指定,要注意的是,你需要先去创建这个目录,然后再在这里去指定这个目录的位置。ServerName是主机名,比如之前我们虚拟的那个主机名 hello.com,ServerAlias是主机的别名,你可以指定一个其它的主机名,访问它的时候也会打开这个虚拟主机的目录里的东西。ErrorLog是错误的日志,也就是发生错误的时候,会把错误记录到哪个文件里。CustomLog是虚拟主机访问的日志。
这样自己新添加的虚拟主机看起来应该像这样:
3
4.在浏览器里打开 hello.com,访问的是这个虚拟主机的配置里 DocumentRoot所指定的/Applications/MAMP/htdocs/hello这个目录里的东西,你可以在这个目录里面放点东西,比如一个 WordPress或者 Drupal的网站等等。
注:配置虚拟主机的时候,第一个虚拟主机是默认的,你需要留着,配置自己的虚拟主机,可以从第二个开始配置,也就是第二段<VirtualHost>代码。