我想设置一个虚拟主机到某个端口的 URL
例如我的服务器名称是rockstar.net
所以我想在我的服务器上设置一个子域名,我应该在其中访问http://rockstart.net:8001/
我尝试过:
<VirtualHost *>
ServerName content.rockstart.net
DocumentRoot "http://rockstart.net:8001/"
</VirtualHost>
给出错误
Warning: DocumentRoot [/etc/apache2/http:/rockstar.net:8001/] does not exist
答案1
DocumentRoot 指向本地文件夹结构中托管网站的文件夹,例如(在 Linux 系统上)/var/www/html/rockstart.net。端口号必须包含在 VirtualHost 定义中。因此,您的 VHost 定义应该如下所示:
<VirtualHost *:8001>
ServerName content.rockstart.net
DocumentRoot "/var/www/html/rockstart.net"
</VirtualHost>
然而,这仍然需要用户输入http://rockstart.net:8001进入他们的浏览器。我怀疑你脑子里想的其实更像是重定向。如果重定向需要更改端口(即从 8001 到 80),那么你要么需要使用反向代理,要么需要使用 DNAT 防火墙。
或者,如果要提供的内容http://content.rockstart.net位于rockstart.net所在的同一台服务器上,您只需使用
<Location>
文件系统内的重定向。但是,在这种情况下,我想知道为什么您不将 content.rockstart.net 指向 rockstart.net:8001 获取其内容的同一位置?
答案2
该DocumentRoot
指令描述了机器上的物理路径,例如/var/www/myvhost.net
。
将此指令设置为路径,并将其用于ServerName
第一个以及ServerAlias
您想要指向文件的每个其他名称,定义在 中DocumentRoot
。