Hi Max, I use couch (2.1) in a sub dir via nginx as a proxy with the suggested conf you mentioned in your first email. The only difference is that I turn off buffering at the same level instead of filtering for “_changes” (I may change that). I have attachments with “-“ , “_” and “ “ just not with “+”. I tried adding a doc with a “+” and uploaded it via Fauxton. The “+“ in the name is converted to a space (“ “) in the attachment listing of the respective couch doc. If I try to retrieve the attachment directly, I can either use a “%20” where the space is or also “+”. So it seems that the “+” is reserved as a substitute for a space character and works but maybe not as expected. The other chars should work as expected. This is what works for me:
location /couchdb { rewrite /couchdb/(.*) /$1 break; proxy_pass http://localhost:5984; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } Renato > On Mar 12, 2018, at 12:02 PM, max <maxima...@gmail.com> wrote: > > Thanks for your answers. > @Jan > I already tried this and it cannot be used since the sub directory part > remains in the URI. To be able to use it without the trailing '/' I would > need to tell CouchDB to listen on "127.0.0.1:5984/couchdb" and (I think) I > cannot. > You are right "this is more an nginx than a CouchDB question" but CouchDB > 2.0 doc contains this "Reverse proxy for a sub directory" part that seems > not correct, that's why I was hopping help from CouchDB users :). > > @Sinan > You are completely right but only with '/' and actually this was exactly my > configuration when I did not need sub directories but now I do. > > 2018-03-12 11:34 GMT+01:00 Sinan Gabel <sinan.ga...@gmail.com>: > >> Hi Max, >> >> Sorry for not being able to answer your actual question, I still want to >> draw your attention to the need for further nginx location needs (i.e. >> _changes): Here's an example of a working configuration when listening at >> the root / and using ssl. >> >> location ~ ^/(.*)/_changes { >> proxy_pass http://couchdb_node; >> >> proxy_redirect off; >> >> proxy_buffering off; >> proxy_set_header Host $host; >> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >> proxy_set_header X-Forwarded-Ssl on; >> } >> >> location / { >> proxy_pass http://couchdb_node; >> >> proxy_redirect off; >> proxy_set_header Host $host; >> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >> proxy_set_header X-Forwarded-Ssl on; >> } >> >> On 12 March 2018 at 11:08, Jan Lehnardt <j...@apache.org> wrote: >> >>> Hi Max, >>> >>> this is more an nginx than a CouchDB question, but >>> https://serverfault.com/questions/459369/disabling- >>> url-decoding-in-nginx-proxy#463932 suggests that if you use proxy_pass >>> without a uri (not even a slash), that things should work. >>> >>> Can you verify you’re using `proxy_pass http://localhost:5984;` and not >>> e.g. `proxy_pass http://localhost:5984/;`. If you are, you should open a >>> ticket with the nginx team. >>> >>> Best >>> Jan >>> -- >>> >>> >>> >>>> On 12. Mar 2018, at 10:20, max <maxima...@gmail.com> wrote: >>>> >>>> Hi, >>>> >>>> To make CouchDB listen as sub directory, doc says ( >>>> https://cwiki.apache.org/confluence/display/COUCHDB/Nginx+as+a+proxy) >> to >>>> use: >>>> location /couchdb { >>>> rewrite /couchdb/(.*) /$1 break; >>>> proxy_pass http://localhost:5984; >>>> proxy_redirect off; >>>> proxy_set_header Host $host; >>>> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; >>>> } >>>> >>>> But this cannot be used for attachment with special character such as >> +, >>>> -, , >>>> For those CouchDB will send back: "{"error":"not_found","reason" >>> :"Document >>>> is missing attachment"}" >>>> >>>> The only way I found to fix it is: >>>> location /couchdb/ { >>>> rewrite ^ $request_uri; >>>> rewrite ^/ couchdb /(.*) $1 break; >>>> return 400; >>>> proxy_pass http://127.0.0.1:5984/$uri; >>>> } >>>> >>>> But doing so I cannot access CouchDB root (http://127.0.0.1/couchdb) >>> since >>>> it will result in Nginx 500 error (zero length URI). >>>> >>>> Do you know a better Nginx configuration? >>>> >>>> Thanks, >>>> >>>> Max >>> >>> -- >>> Professional Support for Apache CouchDB: >>> https://neighbourhood.ie/couchdb-support/ >>> >>> >>