2013-09-06 6 views
1

Я борется с ошибкой в ​​течение последних нескольких недель, что заводило меня с ума. Пожалуйста, помогите!django-social-auth дает 502 ошибку с Google OpenID, но только с несколькими пользователями

Вот симптом:

Если пользователь не вошел в систему, чтобы GMail, он может войти в мой сайт (используя GMail OpenId) без проблем. Это явно подскажет пользователю сначала пройти аутентификацию в GMail.

Однако, если пользователь уже прошел аутентификацию в GMail, он видит страницу с ошибкой 502, сгенерированную nginx.

Это происходит только несколько пользователей (я не один из них), и один из них был достаточно любезен, чтобы сообщить и даже сделал видео, чтобы продемонстрировать:

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

Weird ISN» это?

Я добавил несколько отладочных линий Джанго-социал-AUTH в производстве, чтобы попытаться понять, что происходит (here, просто Ctrl + F + «регистратор», чтобы найти мои изменения)

С помощью этой установки попытки входа в систему здравоохранения зальет мой (Джанго) файл журнала с материалом как

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:/

Однако этот конкретный пользователь неудачные попытки входа в систему не производят никакого вывода в файле журнала Джанго. Таким образом, он даже не касается метода просмотра.

Есть, однако, несколько журналов на nginx.

Вот что плохая попытка Войти выглядит (в /var/log/nginx/access.log):

`` ` 130.225.243.86 - - [03/Сентябрь/2013: 13: 23: 39 +0000] «GET/complete/google /? Janrain_nonce = 2013-09-03T13% 3A23% XXXXXXXXXX & 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% 253XXXXXXXXX & ope nid.assoc_handle = 1.AMlYXXXXXXXXXXXr5MKoxu- к -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.орг% 2FnamePerson% 2Ffirst & openid.ext1.value.first_name = Бастиан & openid.ext1.type.last_name = HTTP% 3A% 2F% 2Faxschema.org% 2FnamePerson% 2Flast & openid.ext1.value.last_name = Хугаард & OpenId. ext1.type.email = http% 3A% 2F% 2Faxschema.org% 2Fcontact% 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, как Gecko) Chrome/29.0.1547.62 Safari/537,36"

`` `

Это всегда сопровождается записью в/вар/Журнал/Nginx/ошибки. log like:

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/"

Хорошая попытка Войти выглядит точно так же (в access.log), но вместо того, заканчивая

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"

Заканчивается

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

и конечно, он не генерирует никаких записей в error.log.

Моей производственная среда является стандартным Nginx + uswgi с сокетами файлов, довольно много, как говорит этот учебник ->https://uwsgi.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

Я appretiate любой помощи вы можете дать!

+0

Я попытался воспроизвести ошибку, но, к сожалению, это сработало со мной просто отлично. Возможно, ваш журнал ошибок django будет иметь что-то, чтобы объяснить это, взгляните туда, и если вы обнаружите, что он поделится им с нами. –

+0

Теперь я убежден, что это не проблема джанго. Это проблема между nginx и uwsgi. Код django даже не запускается для этого запроса. –

ответ

7

VICTORY !!!

После небольшого исследования я узнал, что uwsgi имеет опцию --daemonize, которая будет направлять журналы uwsgi в файл.

После включения этого я начал видеть ошибки как `неверного размера блока запроса: 4167 (макс 4096) ... пропустить

Поэтому я добавил еще один вариант конфигурации: buffer-size = 8192 И проблема ушла.

Большое спасибо Bastian, которые помогли мне отладить эту проблему!

+0

просто сказать, что это параметр uwsgi –