gpt4 book ai didi

python - Flask SERVER_NAME 永远不正确

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:31 28 4
gpt4 key购买 nike

我目前正在开发托管在 Amazon AWS 上的 Flask 应用程序。我正在开发的应用程序有几个组件,我正在开发其中两个组件。我正在寻找为这些组件设置子域,但遇到了一些麻烦。

我想要:

  • www.example.com > GoDaddy
  • dashboard.example.com > AWS
  • api.example.com > AWS

www 子域是一个静态站点,一切正常。我能够设置 Route53 和 GoDaddy,以便仪表板.example.com 和 api.example.com 访问运行 Flask 应用程序的 EC2 服务器。我已经确认了这一点,因为当我使用浏览器访问该域时,我可以看到该请求(即 404ing)。

我遇到的问题是 Flask 期望将 app.config.SERVER_NAME 设置为服务器名称,该名称也必须与 URI 匹配。我的 EC2 实例的服务器名称是 ec2-###-###-###-###.compute-1.amazonaws.com。

如果我将服务器名称设置为此,Flask 应用程序运行正常,并且我会收到 404 页面,并且当我 GET 到仪表板.example.com 或 api 时,通过观察 Flask 应用程序的输出来看到请求.example.com。

为了不显示 404 页面,app.config.SERVER_NAME 应设置为 example.com,但如果我这样做,Flask 应用程序将不会运行,并且我收到 socket.error : [Errno 99] 无法分配请求的地址。

这是我的代码:


from flask import \
Flask, \
request

# my imports
from dashboard import blueprint as dashboard

app = Flask(__name__)

@app.route('/')
def catch():
return request.url

def main():
print('Starting main ...')

app.register_blueprint(dashboard)

if __name__ == '__main__':
main()

app.config['SERVER_NAME'] = 'example.com'
app.run(
host=app.config['server_name'],
port=80,
debug=True,
)

And here is my dashboard module :


from flask import \
render_template, \
Blueprint,\
Response

blueprint = Blueprint(
'dashboard', __name__,
static_folder='static',
template_folder='templates',
subdomain='dashboard',)

@blueprint.route('/', methods=['GET'])
def _():
return render_template('index.html')

@blueprint.route('/js/')
def _js(path):
print('js : %s' % path)
with blueprint.open_resource('static/js/' + path, mode='r') as f:
content = f.read()
return Response(content, mimetype='text/javascript')

@blueprint.route('/css/')
def _css(path):
print('css : %s' % path)
with blueprint.open_resource('static/css/' + path, mode='r') as f:
content = f.read()
return Response(content, mimetype='text/css')

预先感谢大家提供的任何帮助。

最佳答案

我确实发表了评论,但我设法在测试中准确地重现了该错误。

您无法绑定(bind)到地址 example.com,并且该 IP 地址未在本地计算机上列出。我可以绑定(bind)到 mydomain.com,因为它解析为我服务器上的地址。

此外,我认为示例中存在拼写错误,我认为您的意思是 host=app.config['SERVER_NAME'] 并且没有丢失应用程序或 SERVER_NAME 小写?

关于python - Flask SERVER_NAME 永远不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240447/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com