Lah*_*iru 8 django nginx amazon-web-services amazon-elb
我有一个需要身份验证才能访问它的任何页面的 web 应用程序。但是为了让我的 ELB 工作,我必须为 ELB 设置健康检查页面,以便 ELB 发现 django 应用程序。
此页面应返回 HTTP 200 且无需身份验证。我如何使用 django/nginx 世界设置它。
Wat*_*uri 18
这是使用 Django 中间件的另一个解决方案。
from django.http import HttpResponse
class HealthCheckMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.path == '/health':
return HttpResponse('ok')
return self.get_response(request)
Run Code Online (Sandbox Code Playgroud)
并将你的放在HealthCheckMiddleware其他中间件前面settings.py
MIDDLEWARE = [
'yourdjangoapp.middleware.HealthCheckMiddleware',
......
]
Run Code Online (Sandbox Code Playgroud)
只要您的应用程序正在运行,无论任何配置和身份验证如何,您的应用程序都将始终响应路径/health。ok
您可以使用django-health-check第 3 方应用程序。
使用 pip 安装它 -
pip install django-health-check
Run Code Online (Sandbox Code Playgroud)
将 URL 配置为 -
urlpatterns = [
# ...
url(r'^health_check/', include('health_check.urls')),
]
Run Code Online (Sandbox Code Playgroud)
并将 health_check 应用程序添加到您的 INSTALLED_APPS:
INSTALLED_APPS = [
# ...
'health_check', # required
]
Run Code Online (Sandbox Code Playgroud)
更多详情:https : //github.com/KristianOellegaard/django-health-check
现在您可以将 ELB 健康检查网址配置为 - /health_check/
不推荐 - 这是一种让 Django 启动并运行 ELB 的快速而肮脏的方法,但在大多数情况下,健康检查响应应该直接从应用程序代码返回。请参阅其余答案以获得更好的解决方案。
这是 nginx 更好地处理的事情,所以它为 django 应用程序提供服务这一事实应该没有什么区别。
您首先需要配置 ELB 的运行状况检查以 ping 实例的特定 URL,例如/elb-status。您可以按照此处的说明进行操作:http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-healthchecks.html#update-health-check-config
之后,您需要做的就是设置 nginx 始终发回 HTTP 200 状态代码。您可以将类似的内容添加到您的server块中nginx.conf:
location /elb-status {
access_log off;
return 200;
}
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅此答案。
| 归档时间: |
|
| 查看次数: |
10733 次 |
| 最近记录: |