Я использую nginx как обратный прокси для CouchDB. Я бы хотел использовать префикс для прокси, например http://[ip]:8080/proxy/testdb
-> http://localhost:5984/testdb
. я собираюсь Location:
заголовки в ответе HTTP, которые вызывают перенаправление и прерывание моего HTTP-клиента. Как я могу исправить мою конфигурацию nginx?
Мой серверный блок nginx выглядит так:
server {
listen 8080;
root /var/www/proxy;
index index.php index.html index.htm;
location /proxy {
rewrite /proxy/(.*) /$1 break;
proxy_pass http://127.0.0.1:5984;
proxy_redirect off;
# proxy_set_header Host $host;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Пример HTTP-ответа:
HTTP/1.1 201 Created
Server: nginx/1.6.2
Date: Tue, 13 Jan 2015 01:09:00 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 74
Connection: close
Location: http://192.168.0.100/testdb/2134922387
ETag: "1-f355543f12ede9fdc421b4c3ca06c1eb"
Cache-Control: must-revalidate
Исходя из этого, HTTP-клиент пытается перенаправить на http://192.168.0.100/testdb/2134922387
, что дает ошибку 404. (Раскомментирование двух прокомментированных строк конфигурации ничего не меняет).
Пример команды для создания этих заголовков:
curl -v -X POST -H "Content-Type: application/json" -d "{\"_id\":\"2134922387\",\"test\":\"good\"}" http://192.198.0.100:8080/proxy/testdb
Есть какие нибудь идеи как это починить Location:
проблема?
Отредактировано, чтобы добавить: похоже, изменение proxy_redirect
к proxy_redirect http://$host/ /proxy/;
помогает.