Apache2:将虚拟主机限制为一个域名

时间:2017-11-07 16:12:21

标签: django dns apache2

我想做点什么,但我找不到答案(也许我秃头搜索)。我不知道是否有可能这样说,如果不是。

我想将apache虚拟主机限制为只有一个域名:bde.yggdrasil.cafe。因此,如果用户尝试使用90.90.3.57或其他域名访问此网站,则会将其列为不存在的网站。这是我的extra / bde.conf,它包含在httpd.conf中,你会理解这个问题:

<VirtualHost *:80>
    ServerName      bde.yggdrasil.cafe
    ServerAdmin     my@email.fr
    DocumentRoot    /srv/http/bdeweb

    #Some django config
    #[...]

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =bde.yggdrasil.cafe
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Listen 443
<VirtualHost *:443>
    ServerName      bde.yggdrasil.cafe
    ServerAdmin     my@email.fr
    DocumentRoot    /srv/http/bdeweb

    #Some django config
    #[...]

    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/bde.yggdrasil.cafe/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/bde.yggdrasil.cafe/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

如果我使用此代码,并尝试使用http协议连接到90.90.3.57或yggdrasil.cafe,我的请求被django捕获,返回错误400(这是好的,但不是我想要的)。如果我使用http连接到bde.yggdrasil.cafe它会将我正确地重定向到https。

DNS重定向

我认为它有用,所以我给你的DNS重定向:

yggdrasil.cafe      --> 90.90.3.57
bde.yggdrasil.cafe  --> yggdrasil.cafe

删除Django配置

如果我删除了我的HTTP虚拟主机中的django配置,我使用以下文件:

<VirtualHost *:80>
    ServerName      bde.yggdrasil.cafe

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =bde.yggdrasil.cafe
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Listen 443
<VirtualHost *:443>
    ServerName      bde.yggdrasil.cafe
    ServerAdmin     my@email.fr
    DocumentRoot    /srv/http/bdeweb

    #Some django config
    #[...]

    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/bde.yggdrasil.cafe/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/bde.yggdrasil.cafe/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

如果我尝试使用90.90.3.57或yggdrasil.cafe连接到我的服务器,我会选择“/的索引”(这很糟糕,真的很糟糕)。

如果用户没有使用子域“bde.yggdrasil.cafe”,我希望apache忽略连接。

为什么我要这样做?

此域名适用于我的所有内容,包括我希望在“yggdrasil.cafe”域名(不带子域名)上托管的未来个人展示网站。 所以重要的不是结果,但我想知道是否可以在“yggdrasil.cafe”域名之后添加其他VirtualHost而不用django捕获它。

感谢您的时间:)

1 个答案:

答案 0 :(得分:0)

解决方案

如Dusan Basic所说

  

当然,只需添加另一个ServerName yggdrasil.cafe的VirtualHost;首先,您可以使用简单的RewriteRule ^ - [F]

解决了问题:)