Я использую Nginx (версия 1.9.9) в качестве обратного прокси-сервера для моего внутреннего сервера. Ему необходимо выполнить аутентификацию/авторизацию на основании содержимого запросов POST. И у меня возникли проблемы с чтением тела запроса POST в моем обработчике auth_request. Вот что я получил.Nginx auth_request обработчик доступа к телу запроса POST?
конфигурации Nginx (соответствующая часть):
server {
location/{
auth_request /auth-proxy;
proxy_pass http://backend/;
}
location = /auth-proxy {
internal;
proxy_pass http://auth-server/;
proxy_pass_request_body on;
proxy_no_cache "1";
}
}
И в моем Auth-сервера кода (Python 2.7), я пытаюсь прочитать тело запроса, как это:
class AuthHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def get_request_body(self):
content_len = int(self.headers.getheader('content-length', 0))
content = self.rfile.read(content_len)
return content
Я распечатанный content_len и он имел правильное значение. Однако self.rfile.read() будет просто зависать. И в итоге он будет тайм-аут и возвращает «[Errno 32] Broken pipe».
Это, как я отправил тестовые данные на сервер:
$ curl --data '12345678' localhost:1234
Вышеуказанная команда вешает, а также и в конечном счете, время ожидания и печатает «Заключительное соединение 0».
Какие-либо очевидные ошибки в том, что я делаю?
Спасибо большое!
Интересно, что если я использую 'curl' для отправки непосредственно на мой auth-сервер, он может просто прочитать тело запроса. – yty