将本地 IP 127.0.1.2 映射到 Apache Server 中的不同目录中

将本地 IP 127.0.1.2 映射到 Apache Server 中的不同目录中

在我的本地主机(Apache 服务器)中,我有两个VirtualHost端口 80 指向不同的目录。

这是我的两个conf文件:

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /home/myuser/project_1/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName project2
    DocumentRoot /home/myuser/project_2/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

在我的/etc/hosts文件中:

127.0.0.1 localhost
127.0.1.2 project2

现在,当我键入时,http://localhost它映射到project_1目录,并且http://project2/它映射到project_2目录。这里一切都很好,但如果我输入127.0.1.2它总是映射到第一个project_1而不是project_2目录,即它映射到localhost而不是project2url。

为什么是这样?我怎样才能做这样的反向映射?

答案1

在虚拟主机配置中,您将使用指定的基于名称的虚拟主机ServerName。这意味着仅当客户端请求中的“Host”标头匹配时才会加载配置。当 Apache 无法将请求的主机与任何配置的虚拟主机相匹配时,Apache 的默认行为是加载它可以找到的第一个配置的虚拟主机。

有很多选项可以获取正确的内容,其中之一是调整请求中的“主机”标头以匹配ServerName您尝试访问的内容。另一种方法是将 IP 地址添加为 a,ServerAlias或者您可以切换到基于 IP 的虚拟主机并以这种方式进行配置。

相关内容