【问题标题】:Access apache2 sites located in /var/www/xxxxx and /var/www/html/yyyyy访问位于 /var/www/xxxxx 和 /var/www/html/yyyyy 的 apache2 站点
【发布时间】:2020-04-26 12:07:02
【问题描述】:

我有一个在路由器后面运行的服务器(ubuntu 18.04),我用它来测试各种 Web 应用程序(snipe-it、phpipam 和 libre speedtest)。没有资源供单个机器运行它们,也不想深入研究虚拟机,我想我可以在同一个 apache 实例上运行它们并通过更改虚拟主机配置来访问它们。

当我运行单个虚拟主机时,每个站点都运行良好。当我尝试运行多个站点(a2ensite xxx 和 a2ensite yyy)时,会显示具有较低字母名称(在本例中为 xxx)的站点。

我不知道 Alias 或 Rewrite 是否适合。我无法真正改变开发人员选择编写应用程序的方式以及他们想要放置程序的位置。我能理解为什么(我认为)他们把它们放在那里。我只想能够访问所有网站/页面/应用程序...

/etc/apache2/sites-available/snipeit.conf

<VirtualHost *:80>
    ServerName snipeit
    DocumentRoot /var/www/snipe-it/public
    Alias "/" "/var/www/snipe-it/public"
    <Directory /var/www/snipe-it/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

/etc/apache2/sites-available/phpipam.conf

<VirtualHost *:80>
    ServerName phpipam
    DocumentRoot /var/www/phpipam
    <Directory /var/www/phpipam>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

/etc/apache2/sites-available/speedtest.conf

<VirtualHost *:80>
    ServerName speedtest
    DocumentRoot /var/www/html
    <Directory /var/www/html/speedtest>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

【问题讨论】:

  • 您是从 localhost 访问该站点吗?
  • 我正在从路由器后面的同一子网访问站点,但不是本地主机。服务器 192.168.0.250,从 192.168.0.3 的桌面访问。
  • 你是否有不同的IP地址?
  • 相同的 IP 地址 192.168.0.250。我希望能够像这样访问它们:192.168.0.250\snipeit 或 192.168.0.250\phpipam 或 192.168.0.250\speedtest 我需要测试下面的解决方案,但没有机会。

标签: apache virtualhost


【解决方案1】:

要实现您想要的,您可能需要这样做:
将这两个目录移动到 /var/www/html。并为他们删除所有虚拟主机除了 /var/www/html 是 000-default.conf 的虚拟主机。当您将它们存储在不同的目录而不是这个简单的技巧时,这将变得很复杂。

编辑:

用户有依赖于这些路径的应用程序。所以最好的方法是在 Apache 中使用别名。确保在 Apache 中加载了 mod_alias。将此添加到 httpd.conf 的末尾。

Alias "/snipeit" "/var/www/snipe-it/public"
Alias "/phpipam" "/var/www/phpiam"
#And, speedtest is already inside the folder.

您可以访问这些网站,例如:http://localhost/snipeithttp://localhost/phpiamhttp://localhost/speedtest。或者您可以使用 IP 地址来访问它。

【讨论】:

  • 我试过这个。我可以看到 html 下的目录并单击它们,但是编写的程序(不是我编写的)会爆炸;期望目录位于 /var/www 下。如果不需要,我不想进入程序并进行修改,因为这会扰乱升级过程,甚至可能会破坏安全性。
  • 好的,我提供另一种方法,但是比较复杂。
  • @RSchnell 更新了我的答案
【解决方案2】:

您可以按照以下步骤检查问题所在。

1) 检查您的 /etc/hosts 文件是否有适合 ServerNAMe 的 DNS 条目

snipeit.x localhost
phpipam.x localhost
speedtest.x localhost

2) 确保 ServerName 指令与主机匹配。 ServerName 应该与您用来访问它的 DNS 名称完全相同。

3) 检查 Apache VirtualHost 配置

apache2ctl -S

3) 在调试模式下运行 Apache。并检查 apache 如何解析您的请求。

apache2ctl -t -c /path/to/apache.conf

【讨论】:

  • 我试过了,它仍然默认为 phpipam,这是 apache2ctl -S 显示为默认站点的内容。它永远不会被狙击
  • 我开始认为这可能与 ReWrite 或某种形式的重定向有关。
猜你喜欢
  • 2018-06-12
  • 2014-03-16
  • 1970-01-01
  • 2017-02-28
  • 2020-07-04
  • 2022-01-09
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
相关资源
最近更新 更多