cfeltz34 opened a new issue, #4635: URL: https://github.com/apache/couchdb/issues/4635
## Description Bad redirection 301 from request on _design%2F with reverse proxy. ## Steps to Reproduce Use docker compose to create CouchDB and Traefik (reverse proxy) containers and configure CouchDB with a PathPrefix : ` - "traefik.http.routers.couchdb.rule=Host(`mydomain.com`) && PathPrefix(`/couchdb`)"` Create database "example". Execute request "https://webapihelper.groupe-isia.com/couchdb/example/_design%2Fexample" --> CouchDB server return redirection 301 to https://domain.com/example/_design/example ## Expected Behaviour --> CouchDB server return redirection 301 to https://domain.com/couchdb/example/_design/example ## Data Full example for docker-compose with this file : ``` version: '3.7' services: traefik: container_name: example.traefik image: traefik:v2.6.0 command: - "--log.level=DEBUG" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" ports: - "80:80" - "443:443" - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "./Traefik/traefik.toml:/etc/traefik/traefik.toml" - "./Traefik/configuration/:/configuration/" - "../../Certificates/:/certificates/" networks: - network couchdb: container_name: example.couchdb image: couchdb:3.3.1 environment: - COUCHDB_USER=xxx - COUCHDB_PASSWORD=xxx volumes: - couchdb-data:/opt/couchdb/data labels: - "traefik.enable=true" - "traefik.http.services.couchdb.loadbalancer.server.port=5984" # - "traefik.http.routers.couchdb.rule=Host(`couchdb.mydomain.com`)" - "traefik.http.routers.couchdb.rule=Host(`mydomain.com`) && PathPrefix(`/couchdb`)" - "traefik.http.middlewares.couchdb.stripprefix.prefixes=/couchdb" - "traefik.http.middlewares.couchdb.stripprefix.forceSlash=false" - "traefik.http.routers.couchdb.middlewares=couchdb@docker" - "traefik.http.routers.couchdb.entrypoints=web-secure" - "traefik.http.routers.couchdb.tls=true" networks: - network volumes: couchdb-data: networks: network: ``` ## Your Environment {"couchdb":"Welcome","version":"3.3.1","git_sha":"1fd50b82a","uuid":"380d7087e65adca8a7336c699bc5c564","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}} * CouchDB version used: 3.3.1 * Browser name and version: Chrome from Windows * Operating system and version: Debian Linux with docker and docker compose ## Additional Context I'm not sure, but in file "couch_httpd_db.erl" (on main branch) there are (line 517) : ``` db_req( #httpd{ method = 'GET', mochi_req = MochiReq, path_parts = [DbName, <<"_design/", _/binary>> | _] } = Req, _Db ) -> **PathFront = "/" ++ couch_httpd:quote(binary_to_list(DbName)) ++ "/",** [_ | PathTail] = re:split( MochiReq:get(raw_path), "_design%2F", [{return, list}] ), couch_httpd:send_redirect( Req, PathFront ++ "_design/" ++ mochiweb_util:join(PathTail, "_design%2F") ); ``` --> PathFront need to use the path prefix (may by add environment variable to set full url (like KC_HOSTNAME_URL for Keycloak). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
