nginx proxy_pass для PUT без заголовка Content-Length возвращает 411
У меня проблемы с nginx proxy_pass и PUT без заголовка Content-Length, возвращающего ошибку 411.
Что я запускаю, чтобы проверить это:
# curl -XPUT http://localhost:8080/
<html>
<head><title>411 Length Required</title></head>
<body bgcolor="white">
<center><h1>411 Length Required</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
# touch temp
# curl -X PUT http://localhost:8080/ -T temp
{"response": "ok"}
Соответствующая конфигурация:
# Proxy to Backend Server
server {
listen localhost:8080;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend_server;
}
}
Я нашел этот пост, который, кажется, та же проблема:
http://forum.nginx.org/read.php?2,72279,72279
Есть ли способ получить nginx для запросов PUT прокси без заголовка Content-Length?
Новая версия nginx НЕ страдает от этой ошибки / ограничения?
1 ответ
Обновитесь до nginx >= 1.4.1
(1.3.9
или же 1.4.0
было бы достаточно, но есть проблемы безопасности thx @elhefe - смотрите комментарии) или установите http://wiki.nginx.org/NginxHttpChunkinModule, как упомянуто здесь. Существуют официальные пакеты для семейства Debian и RedHat.
Debian:
Wheezy Backports (в настоящее время 1.4.4-1)
добавить к
/etc/apt/sources.list
:deb http://ftp.debian.org/debian/ wheezy-backports main
запустите и установите версию nginx по вашему выбору (
nginx-full
,nginx-light
,nginx-naxsi
)apt-get update apt-get -t wheezy-backports install nginx-full
Пакет nginx.org (стабильная версия на данный момент 1.4.4):
wget http://nginx.org/keys/nginx_signing.key apt-key add nginx_signing.key
добавить к
/etc/apt/sources.list
:deb http://nginx.org/packages/debian/ wheezy nginx deb-src http://nginx.org/packages/debian/ wheezy nginx
удалить текущие пакеты nginx:
apt-get remove nginx-full nginx-common
обновить список пакетов:
apt-get update apt-get install nginx
Для Debian-подобного обновления изменения поведения
/etc/nginx/nginx.conf
user www-data;
и добавить в конце
http
разделinclude /etc/nginx/sites-enabled/*;