我有一个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中有任何方法吗?
答案 0 :(得分:0)
您可以使用Host
请求标头:
from flask import request
hostname = request.headers.get('Host')
这应该为您提供浏览器用来执行请求的主机名,例如192.168.200.10
或www.example.com
。
如果要剥离端口(8080
),可以使用类似的
hostname = request.headers.get('Host').split(':')[0]