Назад | Перейти на главную страницу

Nginx + Passenger: 502 Bad Gateway от Nginx при передаче urlencoded URL-адресов в переменных GET

Вот пример URL-адресов, которые не работают:

http://domain/do?url=http%3A%2F%2Fwww.linkedin.com%2Fin%2Fperson
http://domain/do?url=http%3A%2F%2Fwww.linkedin.com%2F

Однако следующий URL-адрес действительно работает:

http://domain/do?url=http%3A%2F%2Fwww.linkedin.com

Кроме того, это происходит только с Nginx, при использовании Passenger с Apache он работает нормально, но мы используем Nginx на наших производственных машинах.

Вот запись в журнале ошибок Nginx:

2009/12/01 09:30:51 [error] 6407#0: *136 upstream prematurely closed connection while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: domain, request: "GET /do?url=http%3A%2F%2Fwww.linkedin.com%2F HTTP/1.1", upstream: "passenger://unix:/tmp/passenger.6335/master/helper_server.sock:", host: "domain"

Это не имеет ничего общего с Nginx или Passenger.

Была библиотека, которая принимает и использует URL-адрес, который не работал с версией Ruby на нашем производственном сервере. По какой-то странной причине это приводило к настолько катастрофическому сбою Rails, что единственные ошибки были в журнале ошибок Nginx.