2013-09-06 3 views
1

Je me bats depuis quelques semaines avec un bug qui me rend fou. S'il vous plaît aider!django-social-auth donne 502 erreur avec Google OpenID, mais seulement avec quelques utilisateurs

est ici le symptôme:

Si l'utilisateur n'est pas connecté à GMail, il peut se connecter sur mon site (en utilisant GMail openID) sans problème. Cela invitera l'utilisateur à s'authentifier d'abord dans GMail en premier.

Cependant, si l'utilisateur est déjà authentifié dans GMail, il voit une page d'erreur 502, générée par nginx.

Cela se produit uniquement à quelques utilisateurs (je ne suis pas l'un d'entre eux), et l'un d'entre eux a eu la gentillesse de faire rapport et a même fait une vidéo pour démontrer:

http://rvzt.net/Temp/google-freedomsponsors.webm

Bizarre ISN » t-il?

J'ai ajouté quelques lignes de débogage à django-auth sociale dans la production pour essayer de comprendre ce qui se passe (here, juste ne ctrl + f + « enregistreur » pour trouver mes changements)

Avec cette configuration , les tentatives de connexion de santé inonderont mon (django) fichier journal avec des trucs comme

2013-09-06 11:19:26,659 [DEBUG] social_auth.backends: auth_complete ARGS=(), KWARGS={...} 2013-09-06 11:19:26,666 [DEBUG] social_auth.backends: response and status <openid.consumer.consumer.SuccessResponse id='https://id.mixi.jp/10452407' signed=[u'openid.mode', u'openid.claimed_id', u'openid.identity', u'openid.op_endpoint', u'openid.return_to', u'openid.response_nonce', u'openid.assoc_handle', u'openid.ax.type.nickname', u'openid.ns.ax', u'openid.ax.mode', u'openid.ax.value.nickname']>/success 2013-09-06 11:19:26,675 [DEBUG] social_auth.views: got user: 5ca95b48317944cd87b7d5af4b6e77 2013-09-06 11:19:26,683 [DEBUG] social_auth.views: return redirect to:/

Cependant cet utilisateur particulier a échoué les tentatives de connexion produisent pas de sortie dans le fichier journal de django. Ainsi, il ne touche même pas la méthode de vue.

Cependant, il existe quelques journaux sur nginx.

Voici ce que une mauvaise tentative de connexion ressemble (en /var/log/nginx/access.log):

`` ` 130.225.243.86 - - [03/Sep/2013: 13: 23: 39 +0000] "GET/complete/google /? Janrain_nonce = 2013-09-03T13% 3A23% XXXXXXXXXXX & openid.ns = http% 3A% 2F% 2Fspecs.openid.net% 2Fauth% 2F2.0 & openid.mode = id_res & openid.op_endpoint = https% 3A% 2F% 2Fwww.google.com% 2Faccounts% 2Fo8% 2Fud & openid.response_nonce = 2013-09-03T13% 3A23% 3A38Zh5WrngwxTu2ByQ & openid.return_to = http% 3A% 2F% 2Ffreedomsponsors. org% 2Fonctionné% 2Fgoogle% 2F% 3Fjanrain_nonce% 3D2013-09-03T13% 253A23% 253XXXXXXXXXX & ope nid.assoc_handle = 1.AMlYXXXXXXXXXXXr5MKoxu- k -3cnkXXXXXXXXXXXXXXXXXXXXXXgdEpo3HOg & openid.signed = op_endpoint% 2Cclaimed_id% 2Cidentity% 2Creturn_to% 2Cresponse_nonce% 2Cassoc_handle% 2Cns.ext1% 2Cext1.mode% 2Cext1.type.old_email% 2Cext1.value.old_email% 2Cext1.type.first_name% 2Cext1.value.first_name% 2Cext1.type.nom_de_dresse% 2Cext1.value.nom_de_dresse% 2Cext1.type.email% 2Cext1.value.email & openid.sig = 3n46MUyn8wIIWpvYIJXj% 2BeZqC7o% 3D & openid.identity = https% 3A% 2F% 2Fwww.google.com% 2Faccounts% 2Fo8% 2Fid% 3Fid% 3DAItOawmGmlrjd-OuXXXXXXXXXXXXXXXtIXGpMJQ & openid.claimed_id = https% 3A% 2F% 2Fwww.google.com% 2Faccounts% 2Fo8% 2Fid% 3Fid% 3DAItOawmGmlrjd- OuXXXXXXXXXXXXXXXXIXGpMJQ & openid.ns.ext1 = http% 3A% 2F% 2Fopenid.net% 2Fsrv% 2Fax% 2F1.0 & openid.ext1.mode = fetch_response & openid.ext1.type.old_email = http% 3A% 2F% 2Fschema.openid.net% 2Fcontact% 2Femail & openid.ext1.value.old_email = xxxxxxxxx.junior% 40gmail.com & openid.ext1.type.first_name = http % 3A% 2F% 2Faxschema.org% 2FnamePerson% 2Ffirst & & openid.ext1.value.first_name = Bastian openid.ext1.type.last_name = http% 3A% 2F% 2Faxschema.org% 2FnamePerson% 2Flast & & openid.ext1.value.last_name = Hougaard Openid. ext1.type.email = http% 3A% 2F% 2Faxschema.org% 2Fontact% 2Femail & openid.ext1.value.email = xxxxxxxxx.junior% 40gmail.com HTTP/1.1 "502 575" http://freedomsponsors.org/login/google/ "" Mozilla/5.0 (X11 , Linux x86_64) AppleWebKit/537,36 (KHTML, comme Gecko) Chrome/Safari 29.0.1547.62/537,36"

`` `

Ceci est toujours accompagné d'une entrée dans/var/log/nginx/erreurs. Connectez-vous comme:

2013/09/06 10:46:06 [error] 667#0: *116533 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 130.225.198.129, server: freedomsponsors.org, request: "GET //complete/google/?janrain_nonce=2013-09-03T13%3A23%XXXXXXXXXXX&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fud&openid.response_nonce=2013-09-03T13%3A23%3A38Zh5WrngwxTu2ByQ&openid.return_to=http%3A%2F%2Ffreedomsponsors.org%2Fcomplete%2Fgoogle%2F%3Fjanrain_nonce%3D2013-09-03T13%253A23%253XXXXXXXXXX&openid.assoc_handle=1.AMlYXXXXXXXXXXXr5MKoxu-_k_-3cnkXXXXXXXXXXXXXXXXXXXXXXgdEpo3HOg&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ext1%2Cext1.mode%2Cext1.type.old_email%2Cext1.value.old_email%2Cext1.type.first_name%2Cext1.value.first_name%2Cext1.type.last_name%2Cext1.value.last_name%2Cext1.type.email%2Cext1.value.email&openid.sig=3n46MUyn8wIIWpvYIJXj%2BeZqC7o%3D&openid.identity=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawmGmlrjd-OuXXXXXXXXXXXXXXXtIXGpMJQ&openid.claimed_id=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawmGmlrjd-OuXXXXXXXXXXXXXXXXIXGpMJQ&openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ext1.mode=fetch_response&openid.ext1.type.old_email=http%3A%2F%2Fschema.openid.net%2Fcontact%2Femail&openid.ext1.value.old_email=xxxxxxxxx.junior%40gmail.com&openid.ext1.type.first_name=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffirst&openid.ext1.value.first_name=Bastian&openid.ext1.type.last_name=http%3A%2F%2Faxschema.org%2FnamePerson%2Flast&openid.ext1.value.last_name=Hougaard&openid.ext1.type.email=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ext1.value.email=xxxxxxxxx.junior%40gmail.com HTTP/1.1", upstream: "uwsgi://unix:///tmp/frespo.sock:", host: "freedomsponsors.org", referrer: "http://freedomsponsors.org/login/google/"

Une tentative bonne connexion regarde la même chose (en access.log), mais au lieu de se terminant par

502 575 "http://freedomsponsors.org/login/google/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36"

Il se termine par

302 5 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36"

et bien sûr, il ne génère aucune entrée dans error.log.

Mon environnement de production est un nginx standard + uswgi avec les sockets de fichiers, un peu comme ce tutoriel dit ->https://uwsgi.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

J'appretiate toute aide que vous pouvez donner!

+0

J'ai essayé de reproduire l'erreur mais malheureusement, cela a très bien fonctionné avec moi, peut-être que votre journal d'erreur django aurait quelque chose à expliquer, jetez un coup d'oeil là-bas et si vous le trouvez. –

+0

Je suis maintenant convaincu que ce n'est pas un problème django. C'est un problème entre nginx et uwsgi. Le code django ne commence même pas à s'exécuter pour cette requête. –

Répondre

7

VICTOIRE !!! Après quelques recherches, j'ai découvert que uwsgi a une option --daemonize qui va diriger les logs uwsgi vers un fichier.

Après avoir activé que j'ai commencé à voir une erreur comme `la taille du bloc de demande non valide: 4167 (max 4096) ... sauter

J'ajouté une autre option de configuration: buffer-size = 8192 Et le problème a disparu.

Merci beaucoup à Bastian qui m'a aidé à déboguer ce problème!

+0

juste pour dire que c'est un paramètre uwsgi –

Questions connexes