gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:23:10 34 4
gpt4 key购买 nike

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

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

更新

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

/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 直接传递给浏览器而不是内部服务器错误。

更新 2

现在,如果我通过以下方式更改我的 Flask 应用程序以启用 Debug模式:

/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)

当我点击页面 (http://localhost:5000) 时,我的浏览器上显示“Hello World”。

最佳答案

这个“内部服务器错误”页面不是来自 nginx,而是来自 Flask。 当 Debug模式关闭时

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

app = Flask(__name__)
app.debug = True

但是,强烈建议永远不要在公共(public)互联网上的服务器上离开 Debug模式,因为用户可以让服务器运行任何代码。这是一个严重的安全问题。

关于python - nginx + uwsgi + flask - 禁用自定义错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146210/

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