我有两个独立运行在VPS上的站点,我们称之为site1和site2。
它们分别位于/var/www/html/site1
和/var/www/html/site2
。
我还没有域名,但我可以使用服务器IP访问我的站点,假设它的地址是8.8.8.8
我目前对每个站点都有两个单独的apache配置文件。
这两个站点都配置如下,只有DocumentRoot
和第二个Directory
块不同。
ServerName 8.8.8.8
DocumentRoot /var/www/html/site
Options FollowSymLinks
AllowOverride All
AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
我可以通过启用一个和禁用另一个来访问我的两个站点。
我想做的是让site1在http://8.8.8.8上,在http://site2.8.8.8.8上有测试站点。
我尝试了以下配置,但没有成功
ServerName 8.8.8.8
DocumentRoot /var/www/html/site1
Options FollowSymLinks
AllowOverride All
AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName site2.8.8.8.8
DocumentRoot /var/www/html/site2
Options FollowSymLinks
AllowOverride All
AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
我需要DNS记录才能实现我的目标吗?
如果没有,我应该如何配置apache和VPS,以便根据IP前缀使用sit1或site2正确地重定向?
发布于 2021-03-31 06:26:40
基于名称的虚拟主机使用web浏览器作为HTTP请求的一部分发送的主机名,以确定将使用哪个VirtualHost来响应请求。
通常,您需要为此设置DNS,并将site1.example.com
和site2.example.com
指向您的set服务器的IP地址。
对于单个用户/开发人员,可以通过将这两个主机名添加到主机文件来避免注册域和设置DNS记录。
如果您有多个IP地址可用(现在在IPv4世界中很少,但通常在IPv6中),则可以将每个Apache VirtualHost条目绑定到不同的IP地址,并且不需要DNS或主机文件来提供不同的内容,只需访问正确的IP地址即可。
https://httpd.apache.org/docs/current/vhosts/name-based.html#namevip
https://serverfault.com/questions/1058973
复制相似问题