如何在python Flask中获取服务器ip(网络访问ip)作为变量

我有一个 Python Flask 服务器,它在端口 8080 上为我服务。服务器可以通过 NAT 访问。服务器的真实 IP 是 192.168.200.10,在 NAT 之后这将是 192.168.100.10。

我有一台运行在同一台服务器上的 VNC 服务器,我通过使用获取服务器 IP,

def sysip():
    sys_cmd = "ip  -f inet a show enp0s31f6| grep inet| awk '{ print $2}' | cut -d/ -f1"
    sysip = os.popen(sys_cmd).read()        
    return sysip

网页部分,

<a class="btn btn-primary btn-sm" href="http://{{sysip}}:6080/vnc.html" target="_blank" role="button">console </a>

但是这种方法实际上没有任何意义,因为使用了 NAT。

有什么方法可以将访问 Web 服务器的任何“IP”用户附加为 vnc ip 吗?

例如:http : //192.168.100.10 : 8080 -- 使用NAT后的主服务器

现在对于 VNC 我得到了http://192.168.200.10:6080/vnc.html (因为上面的脚本)

相反,我需要http://192.168.100.10:6080/vnc.html

在 Flask 或 javascript 中有什么方法吗?


慕森卡
浏览 825回答 1
1回答

慕莱坞森

您可以使用Host请求标头:from&nbsp;flask&nbsp;import&nbsp;request hostname&nbsp;=&nbsp;request.headers.get('Host')这应该为您提供浏览器用于执行请求的主机名,例如192.168.200.10, 或www.example.com。如果你想剥离端口 (&nbsp;8080),你可以使用类似的东西hostname&nbsp;=&nbsp;request.headers.get('Host').split(':')[0]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript