nginxのカスタムエラーページを無効にして、フレームワークの例外ページを表示することはできますか?
私のwerkzeugデバッガツールがhtmlでレンダリングされているのを実際に見ることができません...
アップデート
OK、動作するように非常に単純なフラスコアプリケーションを作成する必要があります。ビットを投稿します。
/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
代わりに、私が見たいものを見ていきます。
もちろん、例外を発生させなくても機能することを確認しましたが、たとえばindex()関数で「HelloWorld」を返しました。
これは、.NETのカスタムエラーページと呼ばれます。これを無効にして、内部サーバーエラーではなく、デバッガーによって生成された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エラーが発生します。
しかし、私が例外を発生させる代わりに:
/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 )にアクセスすると、ブラウザに「HelloWorld」が表示されます。