目前我的Apache服务器设置如此
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www
</VirtualHost>
问题是/var/www
以下的所有内容都可以从其他地方访问。如果我有一个网页/var/www/john/bio.html
,那么该网页可以借用var/www/jane/
我想像我这样设置我的Apache服务器
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>
ServerName www.john.example.com
ServerAlias john.example.com
DocumentRoot /var/www/john
</VirtualHost>
<VirtualHost *:80>
ServerName www.jane.example.com
ServerAlias jane.example.com
DocumentRoot /var/www/jane
</VirtualHost>
因此,用户john
的所有文件都会进入/var/www/john/
文件夹,同样也会进入用户jane
。然后,关闭符号链接(默认情况下),并且仅从/var/www/user/
向下提供访问(默认情况下再次),我不必担心john's
网页包含来自{的脚本/图像{1}}网页。
答案 0 :(得分:21)
仅使用本地度量(/etc/hosts
而不是DNS),我发现这确实可行。
首先,更改您的/etc/hosts
文件,以获得所需网站名称(www.example.com)和目标IP地址(192.168.1.1)的映射。我使用了我的本地IP地址。
IPAddress Hostname Alias
----------- -------------------------- ------------------
192.168.1.1 www.example.com example.com
192.168.1.1 www.john.example.com john.example.com
192.168.1.1 www.jane.example.com jane.example.com
您的网络浏览器会在查看万维网之前检查您的/etc/hosts
文件 。
接下来浏览所有Apache配置文件(httpd.conf
,apache2.conf
,ports.conf
,conf.d/*
)并确保正好一个文件已发出命令NameVirtualHost *:80
(它不必是端口:80
,但如果它被多次发出,您将获得this problem)。我的发布是/etc/apache2/ports.conf
,所以如果必须的话,请把它放在那里。最后,更新您的Apache配置文件(我的/etc/apache2/sites-available/default
),如此。
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>
ServerName www.john.example.com
ServerAlias john.example.com
DocumentRoot /var/www/john
</VirtualHost>
<VirtualHost *:80>
ServerName www.jane.example.com
ServerAlias jane.example.com
DocumentRoot /var/www/jane
</VirtualHost>
作为最后一步,您可能需要通过发出以下命令将网站添加到Apache(如果您将所有网站都放入sites-available/default
而不是单个网站的单独文件,则不需要执行此步骤)。
# a2ensite www.example.com
# a2ensite www.john.example.com
# a2ensite www.jane.example.com
执行此操作后,john.example.com
将转到/var/www/john
。该目录将作为根目录,john
将无法再访问www
,因此无法访问/var/www/jane
。
同样,执行此操作后,jane.example.com
将转到/var/www/jane
。该目录将作为根目录,jane
将无法再访问www
,因此无法访问/var/www/john
。
关闭符号链接 - 默认情况下 - 两个目录都不能互相访问