nginx + uwsgi + flask — отключение пользовательских страниц ошибок

Можно ли отключить пользовательские страницы ошибок nginx — если я могу их так назвать — для отображения страниц исключений моего фреймворка?

Я действительно не вижу, чтобы мой инструмент отладчика werkzeug отображался в html...

ОБНОВЛЕНИЕ

Хорошо, я должен сделать очень-очень простое приложение для фляг, и я опубликую биты:

/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

Конечно, я убедился, что это будет работать, если я не вызывал исключение, а возвращал «Hello World», например, в моей функции index().

Это относится к пользовательским страницам ошибок в .NET. Я хочу отключить это и позволить nginx/uwsgi передавать html, сгенерированный отладчиком, непосредственно в браузер, а не внутреннюю ошибку сервера.

ОБНОВЛЕНИЕ 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.

Но если я вместо вызова Exception:

/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:/ /localhost:5000).

9
задан johnildergleidisson 22 June 2012 в 02:41
поделиться