Python Flask服务器名称永远不正确
我目前正在Amazon的AWS上开发一个Flask应用程序。我正在处理的应用程序有几个组件,我正在处理其中两个组件。我期待着为这些组件设置子域,虽然我有一些麻烦 我想:Python Flask服务器名称永远不正确,python,amazon-web-services,flask,subdomain,Python,Amazon Web Services,Flask,Subdomain,我目前正在Amazon的AWS上开发一个Flask应用程序。我正在处理的应用程序有几个组件,我正在处理其中两个组件。我期待着为这些组件设置子域,虽然我有一些麻烦 我想: www.example.com>GoDaddy dashboard.example.com>AWS api.example.com>AWS www子域是一个静态站点,一切正常。我能够设置Route53和GoDaddy,这样dashboard.example.com和api.example.com就可以访问运行Flask应用程
- www.example.com>GoDaddy
- dashboard.example.com>AWS
- api.example.com>AWS
www
子域是一个静态站点,一切正常。我能够设置Route53和GoDaddy,这样dashboard.example.com和api.example.com就可以访问运行Flask应用程序的EC2服务器。我已经确认了这一点,因为当我用浏览器访问域时,我可以看到请求(404ing)
我遇到的问题是Flask希望将app.config.SERVER\u NAME
设置为服务器名称,该名称也必须与URI匹配。我的EC2实例的服务器名是EC2-###-##-#35;-#35;-#计算-1.amazonaws.com.
如果我将服务器名设置为该名称,Flask应用程序运行良好,我会得到一个404页面,当我访问dashboard.example.com或api.example.com时,通过查看Flask应用程序的输出来查看请求
要不显示404页面,应将app.config.SERVER\u 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,
)
这是我的仪表板模块:
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')
提前感谢您提供的任何帮助。我确实发表了评论,但我在测试中成功地再现了错误 您无法绑定到地址example.com,并且本地计算机上未列出IP地址。我可以绑定到mydomain.com,因为它解析为我服务器上的地址 另外,我认为在我的示例中有一个输入错误,你的意思是
host=app.config['SERVER\u NAME']
,并且没有丢失应用程序或小写的服务器名称
乔纠正了打字错误。谢谢你接电话。