【问题标题】:Apache virtual host without domain name没有域名的 Apache 虚拟主机
【发布时间】:2014-12-29 16:08:42
【问题描述】:

我有一个安装了 apache2 的 VPS,我想通过 IP 地址访问一些没有域名的 PHP 项目。例如:

http://162.243.93.216/projecta/index.php
http://162.243.93.216/projectb/index.php

我的目录 /var/www/ 中还有其他项目,例如 example.com。

/html/
   info.php
/projecta/
/projectb/
/example/

当我去

http://162.243.93.216/info.php then /var/www/html/info.php is opened. 

我的文件 000-default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
     </Directory>

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

【问题讨论】:

    标签: php apache dns virtualhost


    【解决方案1】:
    " http://162.243.93.216/info.php then /var/www/html/info.php is opened "
    

    我假设这已经有效(如果没有,请取消注释下面 conf 中显示的 ServerAlias 行)

    你现在想要映射

    http://162.243.93.216/projecta//var/www/projecta
    http://162.243.93.216/projectb//var/www/projectb

    为此,您需要使用 Apache Alias 指令。

    将您的 000-default.conf 文件更新为:

    <VirtualHost *:80>
        # ServerAlias 162.243.93.216
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
    
        Alias /projecta /var/www/projecta
        Alias /projectb /var/www/projectb
    
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
         </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    

    【讨论】:

    • 这对我有用,但似乎路由方法不是。它正在正确接收('/')请求,但是如果您调用另一条路线(例如“/something/”),它会返回 404 文件未找到(不是 laravel 文件)
    • 工作正常。谢谢
    • 非常感谢!它在 Azure VM Ubuntu Server 16.04 上完美运行。
    【解决方案2】:

    创建一个新的虚拟主机文件,并像这样设置:

    <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            ServerAlias 192.168.1.1 
            DocumentRoot /somewhere/public_html
            <Directory /somewhere/public_html/>
             Options Indexes FollowSymLinks MultiViews ExecCGI
             AllowOverride Authconfig FileInfo
             Require all granted
            </Directory>
    </VirtualHost>
    

    添加服务器别名,它也会识别 IP 地址... 如果您想添加更多 IP 地址(如本地网络第二个接口),您可以添加更多 serveralias 行 ...

    【讨论】:

    • 但是我指出 URL 是 162.243.93.216/projecta ... 我想我需要添加 DocumentRoot /var/www/projecta ?
    • Documentroot 始终是虚拟服务器的 root,如果你把目录放在那里,你就可以通过目录名访问它......别名基本上是同样的事情,无需在给定位置以物理方式显示目录...因此,如果您的文档根目录是 /var/www/html/ 并且您可以在 162.243.93.216 中访问它,那么目录 /var/www/html/projecta / 将通过162.243.93.216/projecta 访问 请不要忘记,如果您修改了 00_default vhost,每个具有“未知”目标域名的请求都将访问您的项目!
    • 这就是为什么我建议您设置自己的虚拟主机来访问 IP 地址...
    【解决方案3】:

    第六步——设置本地主机文件(可选) 如果您一直使用示例域而不是实际域来测试此过程,您仍然可以通过临时修改“本地计算机”上的主机文件来测试虚拟主机的功能。这将拦截对您配置的域的任何请求,并将它们指向您的 VPS 服务器,就像您使用注册域时 DNS 系统所做的那样。不过,这仅适用于“您的计算机”,并且仅用于测试目的。

    注意:请确保您在本地计算机上操作这些步骤,而不是您的 VPS 服务器。您将需要访问该计算机的管理凭据。

    如果您使用的是 Mac 或 Linux 计算机,请使用管理员权限编辑您的本地主机文件,方法是输入:

    sudo vi /etc/hosts 如果您使用的是 Windows 计算机,则可以在此处找到更改主机文件的说明。

    您需要添加的详细信息是您的 VPS 的公共 IP 地址,后跟您要用于访问该 VPS 的域:

    127.0.0.1 本地主机 127.0.1.1 来宾桌面 server_ip_address example.com server_ip_address example2.com

    参考:https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-centos-7?utm_source=Customerio&utm_medium=Email_Internal&utm_campaign=Email_CentOSDistroNginxWelcome&mkt_tok=eyJpIjoiTnpWbU5tUTJPV1F5TVRBMyIsInQiOiJhd0JCQVI0NDd0ZWprUDFaaDlhbENcL0lyTjdSbnhwMEpkTE1QcXJTcHl1ZXFhNURKVmVBZHFKMk92RW1kSFwvMHowOW0zcExhaUdyOU42U2lLbk1Cd2FRYzB4XC9lbkhlWnd1ekZOcW1sZVhRYlwvT0xrTUpmQ2dEK2dNVUw4alFrc00ifQ%3D%3D

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 2018-11-21
      • 2013-10-13
      • 1970-01-01
      • 2017-01-02
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      相关资源
      最近更新 更多