Nginx https反向代理无限循环
Nginx https反向代理无限循环
这是我为Flask应用程序设置的site-available Nginx配置文件:\nserver {\n listen 80;\n server_name _;\n access_log /var/log/nginx/nginx_access.log;\n error_log /var/log/nginx/nginx_error.log;\n rewrite ^ https://$http_host$request_uri? permanent;\n}\nserver {\n listen 443;\n server_name _;\n access_log /var/log/nginx/nginx_access.log;\n error_log /var/log/nginx/nginx_error.log;\n ssl on;\n ssl_certificate /etc/nginx/ssl/
\n我已经查看了以下问题:Nginx configuration leads to endless redirect loop和nginx redirect loop with ssl。我似乎已经按照这些问题中指定的配置进行设置。\n编辑\nFlask应用程序通过gunicorn/supervisord运行。\nSupervisor config.conf\n[program:config]\ncommand=/usr/local/bin/gunicorn run:app --config /etc/gunicorn/gunicorn.conf --preload\ndirectory=/srv/
\nGunicorn gunicorn.conf\n
bind = '0.0.0.0:5000' backlog = 2048 workers = 3 worker_class = 'sync' worker_connections = 1000 timeout = 30 keepalive = 2 accesslog='/var/log/gunicorn/gunicorn_access.log' errorlog='/var/log/gunicorn/gunicorn_error.log' pidfile = '/tmp/gunicorn.pid' loglevel = 'debug'
\nFlask应用程序\nrun.py\n
from app import app from app import views if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
\nview.py\n
from app import app, session from flask import render_template, json, jsonify import datetime @app.route("/hello/") def render_templates(): return render_template("display.html") (... 其他代码 ..)
\n注意:我在Flask应用程序前面有一个ELB。80和443端口是打开的。\n输入:https://example.com/hello/ 输出:重定向循环\n非常感谢您的帮助。提前表示感谢。
我找到了问题所在。
Nginx的配置应该是这样的:
server {
listen 80;
server_name _;
access_log /var/log/nginx/nginx_access.log;
error_log /var/log/nginx/nginx_error.log;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
由于ELB将HTTPS加密转换为HTTP请求,我的先前配置将所有的HTTP请求重定向到HTTPS。