您现在的位置是: 网站首页 >Django Django

Django使用Email跟踪代码错误---排除部分url引起的404错误和EXTERNAL IP错误

admin2018年12月12日 19:30 Django | Nginx 183人已围观

**继续完成 Django使用Email跟踪代码错误 的内容** 当设置好后,发现访问不存在的url可能会引起告警,以及,`ALLOWED_HOSTS`内禁止IP访问会收到告警邮件 ### 排除部分url引发的404错误 您可以通过调整`IGNORABLE_404_URLS`设置来告诉Django停止报告特定的404s。它应该是已编译正则表达式对象的列表。例如: ```python import re IGNORABLE_404_URLS = [ re.compile(r'\.(php|cgi)$'), re.compile(r'^/phpmyadmin/'), ] ``` 在本例中,任何以`.php`或`.cgi`结尾的URL 404都不会被报告。也不会有任何URL以`/phpmyadmin/`开头。 下面的例子展示了如何排除浏览器和爬虫程序经常请求的一些传统url: ```python import re IGNORABLE_404_URLS = [ re.compile(r'^/apple-touch-icon.*\.png$'), re.compile(r'^/favicon\.ico$'), re.compile(r'^/robots\.txt$'), ] ``` (注意,这些都是正则表达式,所以我们在句点前面放了一个反斜杠来转义它们。) 如果您想进一步定制`django.middleware.common.BrokenLinkEmailsMiddleware`的行为(例如忽略来自web爬虫程序的请求),您应该子类化它并覆盖它的方法。 > 使用日志框架记录404个错误。默认情况下,这些日志记录将被忽略,但是您可以通过编写处理程序并适当配置日志记录来将它们用于错误报告。 https://docs.djangoproject.com/zh-hans/2.1/howto/error-reporting/#errors ### 处理[Django]ERROR(EXTERNAL IP)引发的错误排除 ``` [Django] ERROR (EXTERNAL IP): Invalid HTTP_HOST header:'xxx.xxx.xxx.xxx'. Youmay need to add 'xxx.xxx.xxx.xxx' to ALLOWED_HOSTS. ``` ![BLOG_20181212_193418_31](/media/blog/images/2018/12/BLOG_20181212_193418_31.png "博客图集BLOG_20181212_193418_31.png") 查了很多办法怎么去排除,没找到答案,因为`ALLOWED_HOSTS = [...]`设置禁止使用IP访问,最终打算从nginx下手,禁止IP访问80端口 #### IP:80拒绝方法一 直接修改原来的配置判断 ```nginx /etc/nginx/conf.d# vim blog.starmeow.cn.conf /etc/nginx/conf.d# service nginx restart server { listen 80; server_name blog.starmeow.cn; if ($host != 'blog.starmeow.cn'){ return 403; } rewrite ^(.*) https://$host$1 permanent; location / { proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # access_log logs/www_access.log; } ``` 当访问 http://xxx.xxx.xxx.xxx/ ip访问80端口,就会出现`403 Forbidden` ![BLOG_20181212_193407_82](/media/blog/images/2018/12/BLOG_20181212_193407_82.png "博客图集BLOG_20181212_193407_82.png") ```nginx /etc/nginx/conf.d# vim blog.starmeow.cn.conf server { listen 80; server_name blog.starmeow.cn; if ($host != 'blog.starmeow.cn'){ rewrite ^ http://www.baidu.com$request_uri?; #配置此段表示用IP或其他域名访问时跳转到www.baidu.com } rewrite ^(.*) https://$host$1 permanent; location / { proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # access_log logs/www_access.log; } ``` 当访问会跳转到百度 #### IP:80拒绝方法二 ```nginx /etc/nginx/conf.d# vim http.ip.80.refuse.conf server { listen 80 default; # 配置此段表示用IP或其他域名访问时跳转到www.baidu.com server_name _; rewrite ^ http://www.baidu.com$request_uri?; } ``` #### IP:443拒绝访问 http://blog.51cto.com/kusorz/2136247 ```nginx /etc/nginx/conf.d# vim https.ip.443.refuse.conf server { listen 443 default_server; server_name _ ; ssl on; ssl_certificate 1_blog.starmeow.cn_bundle.crt; ssl_certificate_key 2_blog.starmeow.cn.key; # return 403; rewrite ^ http://www.baidu.com$request_uri?; } ```

很赞哦! (0)

文章交流

  • emoji
0人参与,0条评论

当前用户

未登录,点击   登录

站点信息

  • 建站时间:网站已运行588天
  • 系统信息:Linux
  • 后台程序:Python: 3.6.6
  • 网站框架:Django: 2.2.9
  • 文章统计:222 篇
  • 文章评论:40 条
  • 腾讯分析网站概况-腾讯分析
  • 百度统计网站概况-百度统计
  • 微信公众号:扫描二维码,关注我们
返回
顶部
标题 换行 登录
网站