目前我有一个目录,包含各种面向 Web 的产品,例如 Drupal 网站、wiki 等等,类似于这样。
/srv/www
/srv/www/blog
/srv/www/wiki
/srv/www/sometestphpapp
目前,我有一个 apache2 虚拟主机配置,/sites-available
只需将 ServerName 设置为域,mydomain.com
将 docroot 设置为域/srv/www
,并设置基本身份验证。如果我想提出或演示我正在处理的事情,我会引导人们到该网站,他们只需浏览 apache 提供的目录结构即可。
我想做的是设置一个设置,/srv/www
通过将它们映射到具有自己的基本身份验证的 URL 路径,我可以控制哪些子目录可供人们使用。例如,/srv/www/blog
可以在mydomain.com/blog
我是否需要为要提供的每个文件夹进行单独的配置,更重要的是,指令看起来像什么,以映射mydomain.com/blog
到/srv/www/blog
,并说,mydomain.com/wiki
到/srv/www/wiki
?
答案1
对于开发/演示,我发现最好在 Apache 中使用通配符 DNS 条目(如 *.mydevcompany.com)设置单独的站点,以解析到我的暂存 Web 服务器的公共 IP。
这可以完成几件事:
- 有些 Web 应用不喜欢放在子目录中
- 提高应用程序之间的安全隔离(即一个应用程序中的目录遍历漏洞可能会危及另一个应用程序)
- 更容易设置备份并将客户端数据分开
- 更容易配置 SSL 和非 SSL 站点而不会发生冲突
使用通配符 DNS,您只需在 Apache 中创建站点配置,通配符 DNS 就会完成所有工作:
ServerName someclient.mydevcompany.com
ServerAlias someclient.mydevcompany.com
DocumentRoot /srv/www/someclient.mydevcompany.com
注意:我还喜欢为每个站点创建单独的配置文件sites-available
,以保持其井然有序。