自定义名称而不是 IP 地址以访问远程服务器上的 Flask 应用程序

时间:2021-05-27 14:38:57

标签: python flask ubuntu-20.04

我有一个在 Ubuntu 20.04 服务器上运行的 Flask Web 应用程序 我按如下方式运行 -

if __name__ == '__main__':
    app.run(host='0.0.0.0')

我想使用应用名称访问它 - http://[app.name]:5000 而不是 http://0.0.0.0:5000,即使用服务器的 IP 地址。

我尝试了以下 - 将主机名从

更改
$ sudo nano /etc/hostname

并且还更改了 hosts 文件

$ sudo nano /etc/hosts

127.0.0.1 app.name
[ip address] app.name
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

我已重新启动服务器并在 main

中更改了以下内容
if __name__ == '__main__':
    app.config['SERVER_NAME']='app.name:5000'
    app.run()

这个方法不行,你能帮我找出问题所在吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您不需要更改 SERVER_NAME - 0.0.0.0 意味着它接受来自任何地方的连接(而不是 127.0.0.1 只接受本地主机连接)。

您的 /etc/hosts 文件看起来是正确的 - 只要它包含该 127.0.0.1 app.name 条目,您就可以开始了。

然后在您的应用文件中,保留

if __name__ == '__main__':
    app.run(host='0.0.0.0')

这是一些示例代码:

test.py:

from flask import *

app = Flask(__name__)

@app.route("/")
def hi():
  return "bye"

if __name__ == '__main__':
    app.run(host='0.0.0.0')

/etc/hosts:

127.0.0.1  app.name

访问 http://app.name:5000/ 有效。