文章内容

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

问题解决,但是还有些疑问没有解决,等待时间来回答这些问题吧。


参考资料:Flask+Gunicorn+Nginx安装


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - nginx 配置不当导致url_for('')出问题

分享到:

发表评论

评论列表