【发布时间】:2014-03-03 09:43:55
【问题描述】:
我有一个 Django 应用程序(出于晦涩的原因)需要知道它运行的服务器的 IP 地址才能将其呈现给客户端。我可以很确定服务器将启动并运行eth0,所以真的,我需要eth0 的地址。
获得这个的最佳方法是什么?理想情况下,这应该在 uwsgi 启动时枚举,而不一定是每个请求。我曾考虑在 settings.py 中添加一些代码,但认为这可能会在每个请求上运行/枚举。
edit 我应该补充一点,这是一个 debian linux 服务器,运行 nginx 并在 uwsgi 中运行 Django 应用程序。
【问题讨论】:
-
您的本地
eth0接口的 IP 地址可能与您的客户看到的不同,并且可能无法从他们这边访问(例如,它可能在专用网络上) -
一般情况下是这样,但在这种特定情况下,eth0 的 IP 是与客户端相关的 IP。
-
究竟是什么设置......它是在 django 之上的 uwsgi 之上的 nginx(例如)吗?
-
是的,抱歉,应该包含在问题中。已更新。
-
@growse 那么你是在 nginx 服务器的 IP 之后吗? (例如......堆栈的“最外层”部分?)或者,uwsgis(主/从)在哪里,或者 django 应用程序服务器来自哪里......?