使用apache2和虚拟主机的子域配置

使用apache2和虚拟主机的子域配置,apache2,subdomain,virtualhost,server-name,Apache2,Subdomain,Virtualhost,Server Name,我正在运行ubuntu 12.04的服务器上设置一个网页 我已经停用了默认站点(一个不同的默认ssl),并创建了一个新的站点,我需要启动并运行它,它将是一个子域 假设我有foo.com。 我的目标是foo.com抛出403 http错误,sub.foo.com呈现我需要的网页。 我的虚拟主机如下所示: foo.com(默认) 服务器管理员webmaster@localhost ServerName foo.com DocumentRoot/var/www/default 选项如下符号链接 不允

我正在运行ubuntu 12.04的服务器上设置一个网页

我已经停用了默认站点(一个不同的默认ssl),并创建了一个新的站点,我需要启动并运行它,它将是一个子域

假设我有foo.com。 我的目标是foo.com抛出403 http错误,sub.foo.com呈现我需要的网页。 我的虚拟主机如下所示:

foo.com(默认)


服务器管理员webmaster@localhost
ServerName foo.com
DocumentRoot/var/www/default
选项如下符号链接
不允许超限
选项索引跟随符号链接多视图
不允许超限
命令允许,拒绝
通融
ScriptAlias/cgi-bin//usr/lib/cgi-bin/
不允许超限
选项+执行CGI-多视图+符号链接所有者匹配
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
#可能的值包括:调试、信息、通知、警告、错误、临界值、,
#警惕,埃默格。
日志级别警告
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
别名/doc/“/usr/share/doc/”
选项索引多视图跟随符号链接
不允许超限
命令拒绝,允许
全盘否定
允许从127.0.0.0/255.0.0.0::1/128开始
sub.foo.com

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName sub.foo.com

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

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/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

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

服务器管理员webmaster@localhost
ServerName sub.foo.com
DocumentRoot/var/www/sub
选项如下符号链接
允许超越所有
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
ScriptAlias/cgi-bin//usr/lib/cgi-bin/
不允许超限
选项+执行CGI-多视图+符号链接所有者匹配
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
#可能的值包括:调试、信息、通知、警告、错误、临界值、,
#警惕,埃默格。
日志级别警告
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
别名/doc/“/usr/share/doc/”
选项索引多视图跟随符号链接
不允许超限
命令拒绝,允许
全盘否定
允许从127.0.0.0/255.0.0.0::1/128开始
当我访问sub.foo.com时,将显示该页面。 当我访问foo.com时,会显示相同的页面(:S),我需要403


我做错了什么?

您是否在Apache配置中启用了NamedVirtualHosts?Apache在重新启动时是否会给您任何警告?是否所有站点都已启用

它们配置了不同的documentroot,所以我猜您在两个路径中都有相同的文件,或者实际上两个请求都由相同的vhost配置提供服务。 在foo.com的配置中,我首先将
Allow from all
更改为
Deny from all

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

选项索引跟随符号链接多视图
不允许超限
命令允许,拒绝
全盘否定
…有了这一变化,您更有可能收到403的问候;)

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