Flask SERVER_NAME设置了最佳实践

时间:2018-04-24 12:39:43

标签: email flask celery-task nginx-reverse-proxy

Flask的设置为SERVER_NAME,大部分时间都很方便。由于我的应用程序有后台任务,我使用Flask上下文。要使上下文起作用,应设置SERVER_NAME

设置SERVER_NAME时,将检查传入请求以匹配此值,或者找不到路由。当放置一个nginx(或其他网络服务器在前面时,SERVER_NAME也应包括端口,反向代理应该处理重写内容,隐藏外部世界的端口号(它做的)。对于会话cookie到在现代浏览器中,代理传递URL名称应与SERVER_NAME相同,否则浏览器拒绝发送cookie。这可以通过在hostname中添加官方/etc/hosts来解决。将其指向127.0.0.1

有一件事我还没弄清楚,它是后台任务中的网址。 url_for与_external选项一起使用,以在其发出的邮件中生成URL。但是该URL包含端口,这当然不同于我的nginx正在运行的443端口...

SERVER_NAME删除端口,使第一段中描述的内容失败。

那么处理邮件中url_for的最佳选择是什么?创建单独的配置设置?创建我自己的url_for

1 个答案:

答案 0 :(得分:0)

您应该输入url_for(location,_external = True) 或者,如果使用nginx,则包含include proxy_params。