如何在python flask中将服务器IP(Web访问IP)获取为变量

时间:2019-07-30 05:05:23

标签: javascript python html flask

我有一个Python烧瓶服务器,它在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

Web部件

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

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

是否有任何方法可以将访问网络服务器的任何“ 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中有任何方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Host请求标头:

from flask import request
hostname = request.headers.get('Host')

这应该为您提供浏览器用来执行请求的主机名,例如192.168.200.10www.example.com

如果要剥离端口(8080),可以使用类似的

hostname = request.headers.get('Host').split(':')[0]