文章内容
2018/7/21 12:07:34,作 者: 黄兵
nginx 配置不当导致url_for('')出问题
最近一边写程序,一边发布,但是有一个地方始终有问题,当点击登陆的时候,用户名和密码都正确,跳转到管理界面,但是url始终错误:
本来应该是http://pdflibr.com/manage/index
,但是却变成了:http://pdflibr.com%2Cpdflibr.com/manage/index
。
后台代码如下所示:
@auth.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() title = '登陆' if form.validate_on_submit(): user = User.query.filter_by(username=form.username.data).first() if user is not None and user.verify_password(form.password.data): login_user(user, form.remember_me.data) return redirect(request.args.get('next') or url_for('main.index')) flash(u'Invalid username or password.','danger') return render_template("auth/login.html", form=form, name=title)
这个是正常跳转,没有什么问题。在v2ex和知乎上面提问都没有解决问题。
我在想是不是nginx配置有问题,我和正常的配置一一比较之后,发现了问题:
正常配置:
location @gunicorn_proxy { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://0.0.0.0:5000; proxy_connect_timeout 500s; proxy_read_timeout 500s; uwsgi_buffers 16 16k; uwsgi_buffer_size 32k; proxy_send_timeout 500s; }
出问题配置:
server { listen 80; server_name pdflibr.com; index index,index.html; location / { # Pass the request to Gunicorn proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; include proxy_params; proxy_pass http://0.0.0.0:8000; # Set some HTTP headers so that our app knows where the request really came from # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
经过多次尝试之后,原来问题处在了include proxy_params;
。
查了一下include proxy_params;
也没有找到具体资料。无解中……
最后测试一下nginx配置文件是否有问题:
sudo nginx -t
没有问题,之后重启一下nginx:
service nginx start
问题解决,但是还有些疑问没有解决,等待时间来回答这些问题吧。
黄兵个人博客原创。
评论列表