HTTPD与其他虚拟主机冲突

时间:2014-06-26 11:33:52

标签: apache centos httpd.conf directadmin

这是我们位于用户directAdmin目录中的httpd.conf文件

# Auto generated apache config file by DirectAdmin version 1.42.1
# Modifying this file is not recommended as any changes you make will be
# overwritten when the user makes any changes to his/her website

# For global config changes that affect all Users, see this guide:
# http://help.directadmin.com/item.php?id=2
# For local config changes that only affect one User, see this guide:
# http://help.directadmin.com/item.php?id=3

# Frontpage requires these parameters in every httpd.conf file or else
# it won't work.
ServerRoot /etc/httpd




<VirtualHost 91.239.206.147:80 >
ServerName www.duri.ge
ServerAlias www.duri.ge duri.ge 

Alias /media/ /home/duri/domains/duri.ge/public_html/media/
Alias /static/ /home/duri/domains/duri.ge/public_html/assets/

<Directory /home/duri/domains/duri.ge/public_html/assets>
       Order deny,allow
       Allow from all
</Directory>

<Directory /home/duri/domains/duri.ge/public_html/media>
       Options +Includes +Indexes
       Order deny,allow
       Allow from all
</Directory>

WSGIScriptAlias / /home/duri/domains/duri.ge/python/sites/duri.ge/duri/wsgi-production.py
WSGIDaemonProcess duri.ge user=duri group=duri python-path=/home/duri/domains/duri.ge/python/sites/duri.ge:/home/duri/domains/duri.ge/python/virtualenvs/duri_env/lib/python2.7/site-packages
WSGIProcessGroup duri.ge

 <Directory /home/duri/domains/duri.ge/python/sites/duri.ge/duri>
    <Files wsgi-production.py>
    Order deny,allow
    Allow from all
    </Files>
    </Directory>


    ServerName www.duri.ge
    ServerAlias www.duri.ge duri.ge 
    ServerAdmin webmaster@duri.ge
    DocumentRoot /home/duri/domains/duri.ge/public_html


    UseCanonicalName OFF

    <IfModule !mod_ruid2.c>
        SuexecUserGroup duri duri
    </IfModule>
    <IfModule mod_ruid2.c>
        RMode config
        RUidGid duri duri
        RGroups apache access
    </IfModule>

    CustomLog /var/log/httpd/domains/duri.ge.bytes bytes
    CustomLog /var/log/httpd/domains/duri.ge.log combined
    ErrorLog /var/log/httpd/domains/duri.ge.error.log






    <Directory /home/duri/domains/duri.ge/public_html>
        Options +Includes -Indexes


        php_admin_flag safe_mode OFF


        php_admin_flag engine OFF
        php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f duri@duri.ge'


        php_admin_value open_basedir /home/duri/:/tmp:/var/tmp:/usr/local/lib/php/


    </Directory>



</VirtualHost>

<VirtualHost 91.239.206.147:80>
ServerName www.mywedding.duri.ge
ServerAlias www.mywedding.duri.ge mywedding.duri.ge 
DocumentRoot /home/duri/domains/duri.ge/public_html/mywedding
ErrorLog /var/log/httpd/domains/duri.ge.mywedding.error.log
CustomLog /var/log/httpd/domains/duri.ge.mywedding.bytes bytes
CustomLog /var/log/httpd/domains/duri.ge.mywedding.log combined
</VirtualHost>

#<VirtualHost 91.239.206.147:80 >
#Alias /media/ /home/duri/domains/duri.ge/public_html/media/
#Alias /static/ /home/duri/domains/duri.ge/public_html/assets/

#<Directory /home/duri/domains/duri.ge/public_html/assets>
#       Order deny,allow
#       Allow from all
#</Directory>

#<Directory /home/duri/domains/duri.ge/public_html/media>
#       Options +Includes +Indexes
#       Order deny,allow
#       Allow from all
#</Directory>

#WSGIScriptAlias / /home/duri/domains/duri.ge/python/sites/duri.ge/duri/wsgi-production.py
#WSGIDaemonProcess duri.ge user=duri group=duri python-path=/home/duri/domains/duri.ge/python/sites/duri.ge:/home/duri/domains/duri.ge/python/virtualenvs/duri_env/lib/python2.7/site-packages
#WSGIProcessGroup duri.ge

# <Directory /home/duri/domains/duri.ge/python/sites/duri.ge/duri>
#    <Files wsgi-production.py>
#   Order deny,allow
#   Allow from all
#   </Files>
#    </Directory>


#   ServerName www.mywedding.duri.ge
#   ServerAlias www.mywedding.duri.ge mywedding.duri.ge 
#   ServerAdmin webmaster@duri.ge
#   DocumentRoot /home/duri/domains/duri.ge/public_html/mywedding


#   UseCanonicalName OFF

#   <IfModule !mod_ruid2.c>
#       SuexecUserGroup duri duri
#   </IfModule>
#   <IfModule mod_ruid2.c>
#       RMode config
#       RUidGid duri duri
#       RGroups apache access
#   </IfModule>

#   CustomLog /var/log/httpd/domains/duri.ge.mywedding.bytes bytes
#   CustomLog /var/log/httpd/domains/duri.ge.mywedding.log combined
#   ErrorLog /var/log/httpd/domains/duri.ge.mywedding.error.log






#   <Directory /home/duri/domains/duri.ge/public_html/mywedding>
#       Options +Includes -Indexes

#       php_admin_flag safe_mode OFF


#       php_admin_flag engine OFF
#       php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f duri@duri.ge'


#       php_admin_value open_basedir /home/duri/:/tmp:/var/tmp:/usr/local/lib/php/


#   </Directory>



#</VirtualHost>



#<VirtualHost 91.239.206.147:80 >
#Alias /media/ /home/duri/domains/duri.ge/public_html/media/
#Alias /static/ /home/duri/domains/duri.ge/public_html/assets/

#<Directory /home/duri/domains/duri.ge/public_html/assets>
#       Order deny,allow
#       Allow from all
#</Directory>

#<Directory /home/duri/domains/duri.ge/public_html/media>
#       Options +Includes +Indexes
#       Order deny,allow
#       Allow from all
#</Directory>

#WSGIScriptAlias / /home/duri/domains/duri.ge/python/sites/duri.ge/duri/wsgi-production.py
#WSGIDaemonProcess duri.ge user=duri group=duri python-path=/home/duri/domains/duri.ge/python/sites/duri.ge:/home/duri/domains/duri.ge/python/virtualenvs/duri_env/lib/python2.7/site-packages
#WSGIProcessGroup duri.ge

# <Directory /home/duri/domains/duri.ge/python/sites/duri.ge/duri>
#    <Files wsgi-production.py>
#   Order deny,allow
#   Allow from all
#   </Files>
#    </Directory>


#   ServerName www.test.duri.ge
#   ServerAlias www.test.duri.ge test.duri.ge 
#   ServerAdmin webmaster@duri.ge
#   DocumentRoot /home/duri/domains/duri.ge/public_html/test


#   UseCanonicalName OFF

#   <IfModule !mod_ruid2.c>
#       SuexecUserGroup duri duri
#   </IfModule>
#   <IfModule mod_ruid2.c>
#       RMode config
#       RUidGid duri duri
#       RGroups apache access
#   </IfModule>

#   CustomLog /var/log/httpd/domains/duri.ge.test.bytes bytes
#   CustomLog /var/log/httpd/domains/duri.ge.test.log combined
#   ErrorLog /var/log/httpd/domains/duri.ge.test.error.log






#   <Directory /home/duri/domains/duri.ge/public_html/test>
#       Options +Includes -Indexes
#
#       php_admin_flag safe_mode OFF
#

#       php_admin_flag engine OFF
#       php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f duri@duri.ge'


#       php_admin_value open_basedir /home/duri/:/tmp:/var/tmp:/usr/local/lib/php/


#   </Directory>



#</VirtualHost>

这是位于/ etc / httpd / conf

中的httpd.conf
#
# This is the main Apache HTTP server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.2> for detailed information.
# In particular, see 
# <URL:http://httpd.apache.org/docs/2.2/mod/directives.html>
# for a discussion of each configuration directive.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.  

ServerRoot "/etc/httpd"
Listen 80

#LoadModule dummy_module /usr/lib/apache/mod_dummy.so
#LoadModule php5_module        /usr/lib/apache/libphp5.so
LoadModule ruid2_module       /usr/lib/apache/mod_ruid2.so
Include /etc/httpd/conf/extra/httpd-phpmodules.conf
#LoadModule SocketPolicyServer /usr/lib/apache/mod_socket_policy_server.so
#LoadModule socket_policy_server_module /usr/lib/apache/mod_socket_policy_server.so
LoadModule wsgi_module /usr/lib/apache/mod_wsgi.so

User apache
Group apache

ServerAdmin admin@localhost
DocumentRoot "/var/www/html"

# Options and AllowOverrides
Include conf/extra/httpd-directories.conf

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.shtml index.php index.php5 index.php4 index.php3 index.phtml index.cgi
</IfModule>

<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

ErrorLog /var/log/httpd/error_log
LogLevel warn

<IfModule log_config_module>
    #replace %b with %O for more accurate logging
    <IfModule mod_logio.c>
      LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
      LogFormat "%h %l %u %t \"%r\" %>s %O" common
      LogFormat "%O %I" bytes

      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog /var/log/httpd/access_log common
</IfModule>

<IfModule alias_module>
    # Include some DirectAdmin alias
    Include conf/extra/httpd-alias.conf
</IfModule>

DefaultType text/plain

<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-gzip .tgz
    AddEncoding x-compress .Z
    AddEncoding x-gzip .gz .tgz
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddHandler cgi-script .cgi
    AddHandler type-map var
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    AddType video/x-ms-asf .avi
    AddType video/mpeg .mpg
    AddType video/mpeg .mpeg
    AddType video/quicktime .mov
    AddType video/x-ms-wmv .wmv
</IfModule>

#EnableMMAP off
#EnableSendfile off

#######################################################################################
# For user configurations not maintained by DirectAdmin. Empty by default.
#######################################################################################

Include conf/extra/httpd-includes.conf


#######################################################################################
# Do not change anything in included files, because they are rewritten by DirectAdmin #
#######################################################################################

# This is needed for PHP
Include conf/extra/httpd-php-handlers.conf

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf

# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include conf/extra/httpd-autoindex.conf

# Language settings
Include conf/extra/httpd-languages.conf

# User home directories
#Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf

# Virtual hosts
Include conf.d/wsgi.conf

# Local access to the Apache HTTP Server Manual
#Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
Include conf/extra/httpd-dav.conf

# Various default settings
Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf

# Deflate module settings
Include conf/extra/httpd-deflate.conf

# All the DirectAdmin vhosts
Include conf/extra/directadmin-vhosts.conf

# All suPHP directives
#Include conf/extra/httpd-su[5~php.conf

#######################################################################################
# End of included files that are rewritten by DirectAdmin                             #
#######################################################################################

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

#<IfModule mod_socket_policy_server.c>

#Listen 8889
#<VirtualHost *:8889>
#  SocketPolicyServer On
#  SocketPolicyFile /var/www/html/crossdomain.xml
#  AdobePolicyFileServerEnabled On
#</VirtualHost>
# </IfModule>

首先在root上有一个python代码。然后通过directAdmin我添加了两个子域,test和mywedding用于php。

事情是,如果我不评论那些新添加的行,那么apache就不会开始。 然后我直接添加了virtualhost而没有directAdmin。

<VirtualHost 91.239.206.147:80>
ServerName www.mywedding.duri.ge
ServerAlias www.mywedding.duri.ge mywedding.duri.ge 
DocumentRoot /home/duri/domains/duri.ge/public_html/mywedding
ErrorLog /var/log/httpd/domains/duri.ge.mywedding.error.log
CustomLog /var/log/httpd/domains/duri.ge.mywedding.bytes bytes
CustomLog /var/log/httpd/domains/duri.ge.mywedding.log combined
</VirtualHost>

这一行,但问题是子域名&#34; mywedding.duri.ge&#34;保持重定向到(不是用http但在内部)python。

1 个答案:

答案 0 :(得分:2)

您的第一个虚拟主机块未定义ServerName,因此无法知道哪些请求是针对它的,以及哪些请求是针对下一个虚拟主机块的。由于它无法区分,它接受并响应所有请求。添加与第二个块中的ServerName(和别名)不同的ServerName。

请参阅文档here

  

基于IP的虚拟主机使用连接的IP地址   确定要提供的正确虚拟主机。因此你需要   每个主机都有一个单独的IP地址。使用基于名称的虚拟   托管,服务器依赖客户端报告主机名   HTTP标头的一部分。使用这种技术,许多不同的主机   可以共享相同的IP地址。

以下是一个示例虚拟主机,与www.example.com相比,对www.another.com的请求的响应方式不同。希望有这个你可以找到你的问题:

# This line is probably in /etc/apache2/ports.conf, if it is uncommented you do
# not need to repeat it.
NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.example.com

    DocumentRoot /tmp/example.com

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /tmp/example.com>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.another.com

    DocumentRoot /tmp/another.com

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /tmp/another.com>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

我放了两个文件,一个在/tmp/example.com/index.html,另一个放在/tmp/another.com/index.html中,内容不同。当我请求文件时,我能够看到不同的内容:

$ curl http://www.another.com/index.html
another

$ curl http://www.example.com/index.html
example

您需要将这些条目添加到/etc/hosts文件中才能发出请求:

127.0.0.1 www.example.com www.another.com