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

ibps3vxo  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(150)

我想做一些事情,但我找不到答案(也许我搜索得很糟糕)。我不知道这是否可能,如果不可能就告诉我。
我想将Apache虚拟主机限制为一个且唯一的域名:bde.yggdrasil.cafe.因此,如果用户尝试使用90.90.3.57或其他域名访问此网站,则会将其列为不存在的网站。这是我的额外的/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>

如果我尝试使用www.example.com或www.example.com连接到我的服务器90.90.3.57yggdrasil.cafe我会遇到“/的索引”(这很糟糕,真的很糟糕)。
我想Apache忽略连接,如果用户不使用子域“bde.yggdrasil.cafe”。
为什么我想这样做?
这个域名是我所有的东西,包括一个未来的个人展示网站,我想在“yggdrasil.cafe”域名主机(没有子域)。所以重要的不是结果,而是我想知道是否有可能在“yggdrasil.cafe”域名上添加其他VirtualHost而不会被Django捕获。
谢谢你的时间

wnavrhmk

wnavrhmk1#

溶液

作者:Dusan Basic
当然,只需添加另一个VirtualHost与ServerName yggdrasil.cafe;首先,您可以使用简单的RewriteRule ^ - [F]
它解决了这个问题:)

相关问题