【发布时间】:2023-03-25 23:19:01
【问题描述】:
在负载均衡器后面运行的 Django 网站通过使用实例的 IP 地址而不是域名在 /health/ 上发出 HTTP GET 请求来执行健康检查。
如果缺少 www,我会使用 PREPEND_WWW 将 www 添加到域名中。
但是 PREPEND_WWW 也将 www 添加到 IP 地址,这显然是错误的。例如http://www.123.123.123.123/health/
有没有办法防止为 IP 地址添加 www,或者仅在匹配正则表达式列表时添加 www?
或者我应该简单地避免使用 PREPEND_WWW 并使用自定义视图/重定向手动实现重定向?
请注意,我也使用 SECURE_SSL_REDIRECT = True,以防万一这对 www 重定向也有影响。
为了将来参考,我在 Ubuntu 上使用 Apache 和 mod_wsgi,所以我的“服务器级”解决方案是使用 mod_rewrite。
# Edit vhost configuration
sudo vi /etc/apache2/sites-enabled/000-default.conf
# Add redirection to VirtualHost block
<VirtualHost *:80>
...
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule (.*) https://www.domain.com$1 [R=301,L]
...
# Enable mod_rewrite and restart
sudo a2enmod rewrite && sudo service apache2 restart
【问题讨论】:
-
我想说这应该在生产中的 nginx(或其他 Web 服务器)级别上完成。