我首先提出我的问题,下面是我迄今为止尝试解决该问题的详细信息:
在本地主机上运行的 Apache 上,我希望拥有可通过 URL 访问的不同虚拟主机: http://虚拟主机名称.机器名称/
细节:
因此,我在笔记本电脑的 8080 端口上运行 Apache。Linux Mint,因此是 Debian 发行版。出于测试目的,所有内容都在本地,因此不涉及 DNS!我使用的 IP 地址是 127.0.1.1,其中包含我计算机的域名,称为 fabjoa。在文件中/etc/apache2/apache2.conf
,我输入了:
ServerName fabjoa
在文件中/etc/hosts
,确实有这一行
127.0.1.1 fabjoa
在文件中/etc/apache2/ports.conf
NameVirtualHost *:8080
Listen 8080
现在,我的虚拟主机的 conf 文件。该文件名为 goyahkla,位于/etc/apache2/sites-available/
,并在 中有一个符号链接/etc/apache2/sites-enabled
。在此文件中,我有以下内容:
<VirtualHost *:8080>
ServerName goyakhla.fabjoa
ServerAdmin webmaster@localhost
DocumentRoot /var/sites/goyahkla
....
<Directory /var/sites/goyahkla/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
...
</VirtualHost>
运行后apache2ctl configtest
,我得到“语法正常”。现在,在浏览器上,打开http://fabjoa:8080/
确实指向虚拟主机 goyahkla(因为这是我唯一拥有的),但http://goyahkla.fabjoa:8080
找不到。其他调试:
telnet goyahkla.fabjoa:8080
telnet: could not resolve goyahkla.fabjoa:8080/telnet: Name or service not known
lynx goyahkla.fabjoa:8080
Looking up 'goyahkla.fabjoa' first
Looking up 'www.goyahkla.fabjoa.com', guessing...
Looking up goyahkla.fabjoa first
Looking up www.goyahkla.fabjoa.com, guessing...
Looking up www.goyahkla.fabjoa.com:8080
Making HTTP connection to www.goyahkla.fabjoa.com:8080
Alert!: Unable to connect to remote host.
lynx: Can't access startfile http://www.goyahkla.fabjoa.com:8080/
关于如何实现目的,您有什么想法吗?
答案1
我必须/etc/hosts
为每个虚拟主机创建新的条目。
例如,我添加了以下行:
127.0.2.1 goyahkla
这让我可以通过
http://goyahkla/
答案2
您要找的是127.0.1.1 *.fabjoa
hosts 文件中的样式语法。遗憾的是,hosts 文件不支持此功能。您必须使用 DNS 来实现这一点,或者像上面提到的那样分别输入每个样式。