文章内容
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
问题解决,但是还有些疑问没有解决,等待时间来回答这些问题吧。
黄兵个人博客原创。
评论列表