Можно ли отключить пользовательские страницы ошибок 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/
Если я попаду на корневую страницу:
Если я запущу nginx вручную, например:
python /home/my_user/dev/nginx_test/___init___.py
Вместо этого я увижу то, что хочу увидеть:
Конечно, я убедился, что это будет работать, если я не вызывал исключение, а возвращал «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).