配置apache以响应错误页面以查找错误的主机

时间:2017-07-28 08:55:55

标签: django apache


django docs:

  

您还应该配置位于Django前面的Web服务器以验证主机。它应该响应静态错误页面或忽略对不正确主机的请求,而不是将请求转发给Django。通过这种方式,您可以避免Django日志中的虚假错误(如果您以这种方式配置了错误报告,则可以避免发送电子邮件)。例如,在nginx上,您可能会设置一个默认服务器,以便在无法识别的主机上返回“444 No Response”:

我正在使用Apache,这有效:
enter image description here - > 404错误
http://serverip - > http://www.example.com - > django site
https://www.example.com - > http://example.com - > django site

现在我遇到了https://example.com的问题 我的浏览器收到了一条不安全的消息,因为我只有example.com,www.example.com的SSL证书,在我接受安全警告后,我看到django网站,但我想要404错误页面。 我怎样才能实现这个目标,还是误解了django文档?

更新配置:
假设django站点为/var/www/html/index.html以简化 000-default.conf:

<VirtualHost *:80>
        Redirect 404 /
</VirtualHost>

example.com.conf:

<VirtualHost *:80>
        ServerAdmin example@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        RewriteEngine on
        RewriteCond %{SERVER_NAME} =www.example.com [OR]
        RewriteCond %{SERVER_NAME} =example.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

example.com勒ssl.conf中:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin example@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

0 个答案:

没有答案