访问 LAN 上的虚拟主机

访问 LAN 上的虚拟主机

我有一台配置为服务器 VHOST 的 LAMP 服务器。这里的问题是,当我尝试通过同一个 LAN 访问它时,我似乎尝试访问本地 IP 地址而不是 VHOST 地址。但是,当我尝试从外部访问服务器时,它会显示正确的 VHOST。我需要配置 apache 以某种方式为正确的站点而不是默认站点提供服务。我该怎么做?

这是我的两个 VHOST 条目的示例。

默认

<VirtualHost *:80>
    ServerAdmin [email]
    ServerName eresk.fi

    DocumentRoot /home/web/apache-webserver/public_html/
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /home/web/apache-webserver/public_html/>
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /home/web/apache-webserver/cgi-bin/
    <Directory "/home/web/apache-webserver/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

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

另一个网站

<VirtualHost *:80>
    ServerAdmin [email]
    ServerName diggety.net
    ServerAlias *.diggety.net

    DocumentRoot /home/web/diggety/public_html/
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /home/web/diggety/public_html/>
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /home/web/diggety/cgi-bin/
    <Directory "/home/web/diggety/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    <IfModule php5_mod.c>
            php_value session.gc_maxlifetime 604800
    </IfModule>


    ErrorLog ${APACHE_LOG_DIR}/error_diggety.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access_diggety.log combined
</VirtualHost>

答案1

这不是 apache 的错。VirtualHost 指令不适用于通过 IP 发出的请求。您访问站点的 LAN 中的计算机会检查 DNS 服务器并因此获取外部 IP。如果服务器位于同一网络上,则网络上的合适路由器应该可以正确解析/路由它,但有些路由器并不总是这样。

要测试这一点,请在客户端上为您的域添加自定义 DNS 条目,将其映射到服务器的内部 IP。/etc/hosts如果客户端是 Linux 或C:\Windows\system32\drivers\etc\hostsWindows 上的客户端,请编辑并添加以下内容(将 10.0.0.1 更改为服务器的内部 IP):

10.0.0.1 domain.com

更新:如果 DNS 解决方案有效,您可以做的是在内部网络上配置自定义 DNS 服务器,这将允许您设置自定义 DNS 条目。这样您就不需要在客户端上手动设置它了。

相关内容