[英]Adding a Django site breaks my virtual hosts on CentOS 7
我有一个CentOS 7服务器,其中大约有20个域都使用/etc/httpd/conf.d中的vhosts文件自动管理。
我正在尝试学习Django,并希望使用它来设置一个域,所以我在.conf文件中添加了一个特定的虚拟主机。
结果是Django域工作正常但所有其他站点都被破坏 (尝试使用Django但导致错误)。
Django域有两个文件夹: djangodomain.com用于静态文件, djangodomain.app用于Python文件。
如何将单个Django域集成到现有的多域虚拟主机设置中?
现有的vhosts.conf:
<VirtualHost *:80>
serveradmin username@domain.com
serveradmin username@domain.com
usecanonicalname off
# www.site.com » site.com
rewriteengine on
rewritecond %{HTTP_HOST} ^www\.(.*)$ [nc]
rewriterule ^(.*)$ http://%1 [r=301,l]
# file locations
virtualdocumentroot "/home/username/%0"
<directory "/home/username/*">
allowoverride all
require all granted
options indexes followsymlinks
options +execcgi
options +includes
</directory>
</VirtualHost>
我添加的内容打破了除Django网站之外的所有内容:
<VirtualHost djangodomain.com:80>
ServerName djangodomain.com
ServerAlias www.djangodomain.com
ServerAdmin user@domain.com
DocumentRoot /home/username/djangodomain.com
WSGIScriptAlias / /home/username/djangodomain.app/django.wsgi
<Directory /home/username/djangodomain.app>
Order allow,deny
Allow from all
</Directory>
Alias /robots.txt /home/username/djangodomain.com/robots.txt
Alias /favicon.ico /home/username/djangodomain.com/favicon.ico
Alias /images /home/username/djangodomain.com/images
Alias /static /home/username/djangodomain.com/static
ErrorLog /home/username/djangodomain.logs/error.log
CustomLog /home/username/djangodomain.logs/access.log combined
</VirtualHost>
当Apache获取HTTP请求时,它需要知道应该处理此请求的虚拟主机。 现在,它的工作方式是。 Apache获取客户端请求所涉及的IP地址(服务器IP,而不是客户端),并通过虚拟主机定义列表查找为该IP定义的任何虚拟主机。 如果有多个,它将查看Host标头并尝试将其与特定的ServerName或ServerAlias指令相匹配。 如果仍然找不到,它将查找默认的虚拟主机。
您有两个虚拟主机定义。 如果端口80 <VirtualHost *:80>
上的默认vhost,则为一个。 这是默认值,因为它具有*用于IP。 另一个特定于IP地址<VirtualHost djangodomain.com:80>
。 它使用的IP是djangodomain.com解析的任何内容。
因此,任何来到该IP的请求都将由IP特定配置处理,然后才允许它进入默认状态。
要解决此问题,您需要将<VirtualHost *:80>
django虚拟主机指令替换为<VirtualHost *:80>
,与其他虚拟主机相同。 这应该将它们全部置于相同的解析优先级,它将只使用Host头来计算其余部分。
如果您运行的是具有20多个虚拟主机的Web服务器,那么您真的需要更好地了解它的工作原理。 有空的时候阅读HTTP和网络托管。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.