gpt4 book ai didi

python - Django runserver 绑定(bind)到 0.0.0.0,如何获取哪个 IP 接受了请求?

转载 作者:太空狗 更新时间:2023-10-30 00:03:15 28 4
gpt4 key购买 nike

我在有很多 IP 地址的主机上运行一个临时的 Django 应用程序。使用 manage.py runserver 0.0.0.0:5000 时,如果可能的话,代码如何查看机器的众多 IP 地址中的哪一个是请求实际命中的地址?

或者换句话说:

我的主机有 IP 地址 10.0.0.110.0.0.2。当 runserver 监听 0.0.0.0 时,我的应用程序如何知道用户点击的是 http://10.0.0.1/app/path/etc 还是 http ://10.0.0.2/app/path/etc?

我知道,如果我使用 Apache 进行操作,我可以使用 Apache 环境变量,如 SERVER_ADDR,但我没有使用 Apache。

有什么想法吗?

编辑

更多信息:

我正在使用小型 Django 应用测试负载平衡器。这个应用程序正在监听许多不同的 IP,我需要知道通过负载均衡器发出的请求命中了哪个 IP 地址,这样我才能确保它正确平衡。

我不能使用 request.get_host()request.META 选项,因为它们会返回用户输入的内容来访问负载均衡器。

例如:用户点击 http://10.10.10.10/foo,这会将请求转发到 http://10.0.0.1/foohttp://10.0.0.2/foo - 但 request.get_host() 将返回 10.10.10.10,而不是服务器的实际 IP听着。

谢谢,本

最佳答案

request.get_host()

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.get_host

但请注意,这可能会被欺骗,所以不要将您的安全信息传递给它。

如果用户在同一地址下看到您的机器,我不确定这是否可以通过 runserver(它应该是简单的开发工具)实现。

也许你可以使用 nginx?或者,如果这仅用于测试,请执行以下操作:

for i in 1 2 3 4 5; do manage.py runserver 10.0.0.$i:5000; done

然后sys.args[2]就是你的地址

关于python - Django runserver 绑定(bind)到 0.0.0.0,如何获取哪个 IP 接受了请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17595066/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com