nginx + uwsgi + Flask - 禁用自定义错误页面

2023-11-26

是否可以禁用 nginx 的自定义错误页面(如果我可以这样称呼它们)来显示我的框架的异常页面?

我真的看不到我的 werkzeug 调试器工具在 html 中呈现...

UPDATE

好的,我必须制作一个非常非常简单的烧瓶应用程序才能工作,我将发布这些内容:

/home/my_user/.virtualenvs/nginx-test/etc/nginx.conf

worker_processes 1;
events { worker_connections 1024; }
http {
        server {
                listen 5000;
                server_name localhost;
                access_log /home/my_user/.virtualenvs/nginx-test/lib/nginx/access.log;
                error_log /home/my_user/.virtualenvs/nginx-test/lib/nginx/error.log;

                location / {
                        include uwsgi_params;
                        uwsgi_pass unix:/tmp/uwsgi.sock;
                }
        }
}

/home/my_user/dev/nginx_test/___init___.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    raise Exception()

if __name__ == '__main__':
    app.run('0.0.0.0', debug=True)

PYTHONPATH环境变量:

$ echo $PYTHONPATH
/home/my_user/dev/

我如何运行uwsgi:

$ uwsgi -s /tmp/uwsgi.sock --module nginx_test --callable app

我如何运行 nginx:

$ nginx -c ~/.virtualenvs/nginx-test/etc/nginx.conf -p ~/.virtualenvs/nginx-test/lib/nginx/

如果我点击根页面:

server error

如果我像这样手动运行 nginx:

python /home/my_user/dev/nginx_test/___init___.py

我会看到,以及我想看到的:

enter image description here

当然,我确保当我没有引发异常但在我的 index() 函数上返回“Hello World”时它会起作用。

这指的是 .NET 中的自定义错误页面。我想禁用这个并让 nginx/uwsgi 将调试器生成的 html 直接传递到浏览器,而不是内部服务器错误的东西。

UPDATE 2

现在,如果我通过以下方式更改我的烧瓶应用程序以启用调试模式:

/home/my_user/dev/nginx_test/___init___.py

from flask import Flask

app = Flask(__name__)
app.config.update(DEBUG=True)
@app.route('/')
def index():
    raise Exception()

if __name__ == '__main__':
    app.run('0.0.0.0', debug=True)

然后我收到 502 错误。

但如果我不引发异常:

/home/my_user/dev/nginx_test/___init___.py

from flask import Flask

app = Flask(__name__)
app.config.update(DEBUG=True)
@app.route('/')
def index():
    return 'Hello World'

if __name__ == '__main__':
    app.run('0.0.0.0', debug=True)

当我点击该页面时,我的浏览器上会显示“Hello World”(http://本地主机:5000).


这个“内部服务器错误”页面不是来自 nginx,而是来自 Flask。确实如此当调试模式关闭时.

uwsgi 正在将您的代码作为模块导入,而不是作为脚本运行。__name__ == '__main__'为 False 并且不执行 if 语句。尝试在 if 之外设置调试模式:

app = Flask(__name__)
app.debug = True

不过,强烈建议never将调试模式保留在公共互联网上的服务器上,因为用户可以使服务器运行任何代码。这是一个严重的安全问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx + uwsgi + Flask - 禁用自定义错误页面 的相关文章

随机推荐

  • 在 PHP 循环中构建逗号分隔的字符串

    大家好 我需要这样做 我有一个共同的循环 foreach stuffs as stuff echo stuff 假设 stuff 是我拥有的 mysql 表的 id 并且我不想在下一个结果中显示 所以我想构建一个像这样的字符串 1 23 5
  • 有人可以解释互斥体及其使用方法吗?

    我读了一些有关互斥体的文档 但我唯一的想法是它有助于防止线程访问已被另一个资源使用的资源 我从代码片段中获取并执行 效果很好 include
  • Flutter:流已被收听[重复]

    这个问题在这里已经有答案了 我正在使用 BLoC 从 Firestore 加载预设对象 这是我的块模型 class StatisticsBloc extends BlocBase List
  • Android 中的 requestLocationUpdates 间隔

    我尝试获得 onLocationChanged 函数的正确更新速度 这是我的课程 public class LocationService extends Service implements LocationListener 将 minT
  • 用于组合学/背包的动态 T-SQL 方法

    我想我的问题与背包问题的一个变体有关 但我无法真正想出解决方案 假设您在一家五金店 需要购买 21 个螺丝 他们只提供袋装产品 袋子 X 16 个螺丝 每个螺丝 1 56 美元 总计 25 美元 Y 袋 8 个螺丝 每个螺丝 2 25 美元
  • 在 JavaScript 中增加日期

    我需要在 JavaScript 中将日期值增加一天 例如 我有一个日期值 2010 09 11 我需要将第二天的日期存储在 JavaScript 变量中 如何将日期增加一天 三种选择供您选择 1 仅使用 JavaScriptDate对象 无
  • java.lang.InknownClassChangeError:找到接口com.google.android.gms.location.SettingsClient,[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我无法在模拟器或真实设备上运行该应用程序 当我尝试从 VS Code 运行该应用程序时 它显示以下错误消息 我尝试卸载该应用程序并执行flutter clean 无需更改包我也面临这个问题
  • 很难让 browserify-shim 与 grunt-browserify (> 2.0.2) 一起使用作为转换

    在2 0 2版本中grunt browserify browserify shim已从模块本身中删除并转换为用作transform 而不是直接的option on a grunt browserify task The old使用垫片的版本
  • 运行 docker 容器的 docker 内部的气流

    我在 EC2 实例上运行气流 并且正在安排一些启动 Docker 容器的任务 我怎么做 我需要在气流容器上安装 docker 吗 以及下一步是什么 我有一个用于启动容器的 yaml 文件 它源自 puckel airflow Docker
  • iOS 12 中新 iOS 13 系统颜色的回退行为

    我目前正在采用深色模式 我认为使用新的系统颜色 例如systemBackground and label也在界面生成器中正常工作在 iOS 12 中运行该应用程序时 我本以为会出现编译器错误 但该应用程序看起来就像在 iOS 13 轻量模式
  • 从同一向量中推回一个元素是否安全?

    vector
  • 解析类似电子邮件的标头(类似于 RFC822)

    问题 问题 有一个机器人信息数据库我想解析一下 据说是类似于 RFC822 消息 在我重新发明轮子并编写自己的解析器之前 我想我应该看看是否还有其他可用的东西 我偶然发现imap rfc822 parse headers 这似乎正是我想要的
  • 在 Varnish 4 中重试期间更改后端

    我希望能够在 Varnish 4 中重试时更改后端 我们已经使用 Varnish 3 在不同的 较旧的 应用程序上进行了此操作 但我无法弄清楚 v4 的情况 也无法弄清楚找到很多文档 我们想要的设置是有 2 组控制器 一组用于初始请求 尝试
  • 类型错误:对象不支持此属性或方法

    我创建了 Rails 应用程序 在其中创建了数据库 空 当我尝试查看我的产品页面时 我收到以下错误http localhost 3000 产品页 在迁移数据库之前 应用程序可以正常运行 我正在使用 therubyracer 并且使用的是 W
  • 不同域上的 ASP.NET Core CookieAuthenticationOptions.LoginPath

    我在用着CookieAuthenticationOptions在我的 NET Core 应用程序中配置身份验证 但我的登录页面位于不同的域中 但是 那LoginPath属性只允许内部路径 而不是完整的 URI 所以下面的代码 var coo
  • VBA Windows 7 样式按钮

    我很确定这个问题在网络上被问了很多 并且我在几个论坛上阅读了很多问题及其 答案 但我从未见过明确的答案 所以我想知道 可以使用 Windows 7 风格的按钮 在 Excel VBA 中还是我必须使用这些看起来像来自的灰色东西 I dont
  • 哪些 Google GWT 产品使用 UiBinder? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想知道google的哪个
  • Rust 中的 const 除以泛型

    我有一个结构Vec3
  • 应用程序未在 Visual Studio 2015 中的 Android Visual Studio 模拟器中运行

    当我调试此项目时 我创建空白的 xamarin android 项目 没有添加任何代码 调试没有问题 但是当我使用 Visual Studio 模拟器运行应用程序时 android 模拟器正在运行 但没有启动我的应用程序 部署失败 并且不显
  • nginx + uwsgi + Flask - 禁用自定义错误页面

    是否可以禁用 nginx 的自定义错误页面 如果我可以这样称呼它们 来显示我的框架的异常页面 我真的看不到我的 werkzeug 调试器工具在 html 中呈现 UPDATE 好的 我必须制作一个非常非常简单的烧瓶应用程序才能工作 我将发布