503 Service Temporarily Unavailable nginx/1.13.3 in docker - docker
I am trying to use jwilder/nginx-proxy: alpine in order to start nginx, following is the docker run command and steps:
Step1: docker run -d -p 80:80 -p 443:443 -v /var/run/docker.sock:/tmp/docker.sock:ro --name nginx jwilder/nginx-proxy:alpine
Step2: Opened port 80 in the Security Group of ec2 instance, and trying to connect to ip:80/, but the error is as follows 503 Service Temporarily Unavailable nginx/1.13.3
docker logs says:
WARNING: /etc/nginx/dhparam/dhparam.pem was not found. A pre-generated dhparam.pem will be used for now while a new one
is being generated in the background. Once the new dhparam.pem is in place, nginx will be reloaded.
forego | starting dockergen.1 on port 5000
Generating DH parameters, 2048 bit long safe prime, generator 2
forego | starting nginx.1 on port 5100
dockergen.1 | 2017/08/14 13:45:44 Generated '/etc/nginx/conf.d/default.conf' from 4 containers
dockergen.1 | 2017/08/14 13:45:44 Running 'nginx -s reload'
dockergen.1 | 2017/08/14 13:45:44 Watching docker events
dockergen.1 | 2017/08/14 13:45:44 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
nginx.1 | ec2-xx.xx.xxx.xx..ap-xyz-5.compute.amazonaws.com xx.xxx.xxx.x - "GET / HTTP/1.1" 503 615 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
nginx.1 | ec2-xx.xxx.xxxx.xxx.ap-xyz-5.compute.amazonaws.com xx.xx.xx.xxx "GET /favicon.ico HTTP/1.1" 503 615 "http://ec2-xx.xxx.xx.xx.ap-xyz-5.compute.amazonaws.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
jwilder/nginx-proxy doesn't make a lot of sense ran alone. The script behind the magic check other containers environment variables and generate the according rules to reverse proxy from hostname from another container as defined in env var : port defined the same way to the said container & port.
The key here is "hostname from another container". Nginx won't proxy-forward you when you're trying to connect with an IP like you said.
Here's an example from jwielder/nginx's README.md from its github repository
version: '2'
services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
whoami:
image: jwilder/whoami
environment:
- VIRTUAL_HOST=whoami.local <================
Run this, edit your hosts file (something like sudo vim /etc/hosts) add [ec2ip] whoami.local then open your browser for http://whoami.local, that'll work just fine.
Related
docker containers: mariaDB connection issue with nextcloud
I'm the super user at my maschine. There is docker inside my volumne (/volume1/docker). I pulled the latest version of the images and run MariaDB, PhpMyAdmin and NextCloud: docker run -d --name mariadb --network nextcloud --network-alias db -e MYSQL_ROOT_PASSWORD=r00tp#ss -e MYSQL_USER=nextcloud_rw -e MYSQL_PASSWORD=N3xtCl0ud! -e MYSQL_DATABASE=nextcloud -v /volume1/docker/mariadb:/var/lib/mysql --restart=unless-stopped mariadb:latest docker run -d --name phpmyadmin --network nextcloud --link mariadb:db -e PMA_ARBITRARY=1 -e PMA_HOST=db -e PMA_USER=nextcloud_rw -e PMA_PASSWORD=N3xtCl0ud! -p 8082:80 --restart=unless-stopped phpmyadmin:latest docker run -d --name nextcloud --network nextcloud -e MYSQL_HOST=db -e MYSQL_DATABASE=nextcloud -e MYSQL_USER=nextcloud_rw -e MYSQL_PASSWORD=N3xtCl0ud! -v /volume1/docker/nextcloud:/var/www/html -v db:/var/lib/mysql --restart=unless-stopped -p 8080:80 nextcloud:latest When I open the browser and navigate to http:\\whereNextCloudLives:8080, I see the NextClud background plus the installation form. I enter the user nextcloud and the pw N3xtCl0ud! and get the response "Please check your mysql credentials. Cannot connect to DB". MariaDB-Log: [Note] mariadbd: ready for connections. [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation) [Note] [Entrypoint]: Giving user nextcloud_rw access to schema nextcloud [Note] [Entrypoint]: Creating user nextcloud_rw [Note] [Entrypoint]: Creating database nextcloud [Note] [Entrypoint]: Temporary server started. stderr Version: '10.9.3-MariaDB-1:10.9.3+maria~ubu2204' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution [Note] mariadbd: ready for connections. [Warning] Access denied for user 'nextcloud_rw'#'172.18.0.4' (using password: YES) [Warning] Access denied for user 'nextcloud_rw'#'172.18.0.4' (using password: YES) [Warning] Access denied for user 'nextcloud_rw'#'172.18.0.4' (using password: YES) stderr Version: '10.9.3-MariaDB-1:10.9.3+maria~ubu2204' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution NextCloud-Log: 442381598Z stdout 172.18.0.1 - - [02/Dec/2022:18:26:11 +0000] "POST /index.php HTTP/1.1" 200 3538 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" 2022-12-02T18:26:11.300610626Z stdout 127.0.0.1 - - [02/Dec/2022:18:26:11 +0000] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.54 (Debian) PHP/8.0.24 (internal dummy connection)" 2022-12-02T18:26:05.648774341Z stdout 172.18.0.1 - - [02/Dec/2022:18:26:04 +0000] "GET /dist/core-common.js.map?v=dc4002698c876c22453e HTTP/1.1" 200 4483569 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" 2022-12-02T18:26:04.864831573Z stdout 172.18.0.1 - - [02/Dec/2022:18:26:04 +0000] "GET /dist/core-main.js.map?v=0a05117109bf8b6240ea HTTP/1.1" 200 106976 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" 2022-12-02T18:26:04.845899731Z stdout 172.18.0.1 - - [02/Dec/2022:18:26:04 +0000] "GET /core/vendor/zxcvbn/dist/zxcvbn.js.map HTTP/1.1" 404 680 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" 2022-12-02T18:26:04.844799000Z stdout 172.18.0.1 - - [02/Dec/2022:18:26:04 +0000] "GET /dist/core-install.js.map?v=ee580b4e58a4177adf85 HTTP/1.1" 200 9627 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" 2022-12-02T18:26:04.331553336Z stdout 172.18.0.1 - - [02/Dec/2022:18:26:04 +0000] "GET /core/img/manifest.json HTTP/1.1" 200 728 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36" 2022-12-02T18:25:47.268364543Z stderr [Fri Dec 02 18:25:47.267810 2022] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND' 2022-12-02T18:25:47.268255142Z stderr [Fri Dec 02 18:25:47.267778 2022] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.54 (Debian) PHP/8.0.24 configured -- resuming normal operations 2022-12-02T18:25:47.252431732Z stderr AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.4. Set the 'ServerName' directive globally to suppress this message 2022-12-02T18:25:47.240345812Z stderr AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.4. Set the 'ServerName' directive globally to suppress this message I just use the IP. There is no domain configured. I've access to the DB with PhpMyAdmin. Anyone with an idea what is wrong?
Nginx Reverse Proxy cannot communicate with container
I've been trying to teach myself Nginx. Naturally I figured I should use docker. I'm trying to do this with docker for windows. Would eventually move to Linux server. I feel like I'm so close, but I'm stuck on this last issue. reverseproxy_1 | 2021/07/14 22:37:31 [error] 31#31: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://172.18.0.2:5000/favicon.ico", host: "localhost:4000", referrer: "http://localhost:4000/" Anyone have any suggestions? I'm new to this, so it's probably something stupid. I've gone through several tutorials and I really feel like this should work. version: '3.7' services: web: image: 'anatomy-lab2' container_name: 'AnatomyLabWeb' ports: - "5000:80" restart: always reverseproxy: image: nginx:alpine volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro ports: - '4000:4000' depends_on: - web restart: always user nginx; events { worker_connections 1000; } http { upstream web-api { server web:5000; } server { listen 4000; location / { proxy_pass http://web-api; } } } λ docker-compose up Starting AnatomyLabWeb ... done Starting anatomy-lab_reverseproxy_1 ... done Attaching to AnatomyLabWeb, anatomy-lab_reverseproxy_1 reverseproxy_1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration reverseproxy_1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ reverseproxy_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh reverseproxy_1 | 10-listen-on-ipv6-by-default.sh: info: IPv6 listen already enabled reverseproxy_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh reverseproxy_1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh reverseproxy_1 | /docker-entrypoint.sh: Configuration complete; ready for start up AnatomyLabWeb | [04:56:26 WRN] Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed . AnatomyLabWeb | [04:56:26 INF] User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. AnatomyLabWeb | Hosting environment: Production AnatomyLabWeb | Content root path: /app AnatomyLabWeb | Now listening on: http://[::]:80 AnatomyLabWeb | Application started. Press Ctrl+C to shut down. reverseproxy_1 | 2021/07/15 04:56:33 [error] 23#23: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://172.18. 0.2:5000/", host: "localhost:4000" reverseproxy_1 | 172.18.0.1 - - [15/Jul/2021:04:56:33 +0000] "GET / HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" reverseproxy_1 | 2021/07/15 04:56:33 [error] 23#23: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "htt p://172.18.0.2:5000/favicon.ico", host: "localhost:4000", referrer: "http://localhost:4000/" reverseproxy_1 | 172.18.0.1 - - [15/Jul/2021:04:56:33 +0000] "GET /favicon.ico HTTP/1.1" 502 559 "http://localhost:4000/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome /91.0.4472.124 Safari/537.36" I get the web app to work just fine by itself (asp.net/kestrel). But I can't seem to hook it to Nginx. Any thoughts on this would be great. I've been stuck for quite a bit of time.
The problem came from upstream web-api { server web:5000; } In the dockerized environment the web container listens :80 so you need to change the config like upstream web-api { server web:80; }
I got problem while using Nginx to direct requests to services defined in docker-compose.yml
I'm setting up an app with multiple containers, and use nginx to redirect requests to correct container. However, I got stuck with the 502 Bad Gateway error. Actually, the code is from a course on Udemy: Docker and Kubernetes. I just copy and paste the code, it ran on instructor machine, but not mine. I tried on my windows and my macbook, restart docker, but still no hope. I looked for solutions on other stackoverflow posts, some other articles, but none of them tell me why it works on others' machines, but not mine. Here is the repo of the code. docker-compose.yml (full code): version: "3" services: postgres: ... redis: ... nginx: restart: always build: dockerfile: Dockerfile.dev context: ./nginx ports: - "3050:80" api: ... client: ... worker: ... nginx/Dockerfile.dev FROM nginx COPY ./default.conf /etc/nginx/conf.d/default.conf nginx/default.conf upstream client { server client:3000; } upstream api { server api:5000; } server { listen 80; server_name localhost; location / { proxy_pass http://client; } location /api { rewrite /api/(.*) /$1 break; proxy_pass http://api; } } It runs just fine on instructor's machine and other learners', but not on my machines. I got error when connecting http://localhost:3050 and http://localhost:3050/api: nginx_1 | 2019/07/08 02:52:35 [error] 6#6: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.25.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://125.235.4.59:3000/", host: "localhost:3050" nginx_1 | 172.25.0.1 - - [08/Jul/2019:02:52:35 +0000] "GET / HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" "-" nginx_1 | 2019/07/08 02:52:57 [error] 6#6: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.25.0.1, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://125.235.4.59:3000/favicon.ico", host: "localhost:3050", referrer: "http://localhost:3050/" nginx_1 | 172.25.0.1 - - [08/Jul/2019:02:52:57 +0000] "GET /favicon.ico HTTP/1.1" 502 559 "http://localhost:3050/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" "-" Any help is appreciated.
Needed to amend the docker-compose.yml: the upstream services should expose their ports so that the nginx service can connect i.e.: api: expose: - '5000' client: expose: - '3000' the nginx service depends_on the upstream services: nginx: depends_on: - 'client' - 'api'
Service in Traefik path does not redirect to service path for additional requests
I have a VM with a subdomain - e.g. mysubdomain.notmydomain.com, as visible in the logs below - that runs a single node Docker Swarm (for simplicity) and uses Traefik as a reverse proxy for various services. I managed to simplify my issues with different services to the one I am sharing here now. Expected behaviour: I got to mysubdomain.notmydomain.com/test and I see a response with text and a rendered logo. Actual behaviour:: I see a broken link (see photo) Versions Ubuntu 16.04.1 LTS xenial Docker version 18.03.0-ce, build 0520e24 Traefik 1.5.4 Truncated docker-compose file version: '3.4' services: test: image: tutum/hello-world networks: - traefik-network deploy: labels: traefik.enable: "true" traefik.backend: "test" traefik.docker.network: "cat_traefik-network" traefik.frontend.rule: "Host:mysubdomain.notmydomain.com;PathPrefix:/test" traefik.port: 80 traefik.frontend.passHostHeader: "true" traefik.domain: "mysubdomain.notmydomain.com" traefik: image: traefik ports: ["80:80", "443:443", "8080:8080"] volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik/traefik.toml:/traefik.toml - ./traefik/acme.json:/acme.json networks: - traefik-network - mosquitto-network command: --api \ --docker \ --docker.swarmmode \ --docker.domain=mysubdomain.notmydomain.com \ --docker.watch \ --logLevel=DEBUG deploy: placement: constraints: [node.role==manager] labels: traefik.enable: "false" Screenshot showing unexpected behaviour Logs from Traefik cat_traefik.1.ifbq38ugx76r#cat | time="2018-04-03T20:42:39Z" level=debug msg="vulcand/oxy/roundrobin/rr: begin ServeHttp on request" Request="{"Method":"GET","URL":{"Scheme":"","Opaque":"","User":null,"Host":"","Path":"/test","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"Proto":"HTTP/1.1","ProtoMajor":1,"ProtoMinor":1,"Header":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-GB,en-US;q=0.9,en;q=0.8"],"Cache-Control":["max-age=0"],"Connection":["keep-alive"],"Cookie":["redirect_to=%252F"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"]},"ContentLength":0,"TransferEncoding":null,"Host":"mysubdomain.notmydomain.com","Form":null,"PostForm":null,"MultipartForm":null,"Trailer":null,"RemoteAddr":"10.255.0.2:54617","RequestURI":"/test","TLS":null}" cat_traefik.1.ifbq38ugx76r#cat | time="2018-04-03T20:42:39Z" level=debug msg="vulcand/oxy/roundrobin/rr: Forwarding this request to URL" Request="{"Method":"GET","URL":{"Scheme":"","Opaque":"","User":null,"Host":"","Path":"/test","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"Proto":"HTTP/1.1","ProtoMajor":1,"ProtoMinor":1,"Header":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-GB,en-US;q=0.9,en;q=0.8"],"Cache-Control":["max-age=0"],"Connection":["keep-alive"],"Cookie":["redirect_to=%252F"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"]},"ContentLength":0,"TransferEncoding":null,"Host":"mysubdomain.notmydomain.com","Form":null,"PostForm":null,"MultipartForm":null,"Trailer":null,"RemoteAddr":"10.255.0.2:54617","RequestURI":"/test","TLS":null}" ForwardURL=http://10.0.2.7:80 cat_traefik.1.ifbq38ugx76r#cat | time="2018-04-03T20:42:39Z" level=debug msg="vulcand/oxy/forward: begin ServeHttp on request" Request="{"Method":"GET","URL":{"Scheme":"http","Opaque":"","User":null,"Host":"10.0.2.7:80","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"Proto":"HTTP/1.1","ProtoMajor":1,"ProtoMinor":1,"Header":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-GB,en-US;q=0.9,en;q=0.8"],"Cache-Control":["max-age=0"],"Connection":["keep-alive"],"Cookie":["redirect_to=%252F"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"]},"ContentLength":0,"TransferEncoding":null,"Host":"mysubdomain.notmydomain.com","Form":null,"PostForm":null,"MultipartForm":null,"Trailer":null,"RemoteAddr":"10.255.0.2:54617","RequestURI":"/test","TLS":null}" cat_traefik.1.ifbq38ugx76r#cat | time="2018-04-03T20:42:39Z" level=debug msg="vulcand/oxy/forward/http: begin ServeHttp on request" Request="{"Method":"GET","URL":{"Scheme":"http","Opaque":"","User":null,"Host":"10.0.2.7:80","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"Proto":"HTTP/1.1","ProtoMajor":1,"ProtoMinor":1,"Header":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-GB,en-US;q=0.9,en;q=0.8"],"Cache-Control":["max-age=0"],"Connection":["keep-alive"],"Cookie":["redirect_to=%252F"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"]},"ContentLength":0,"TransferEncoding":null,"Host":"mysubdomain.notmydomain.com","Form":null,"PostForm":null,"MultipartForm":null,"Trailer":null,"RemoteAddr":"10.255.0.2:54617","RequestURI":"/test","TLS":null}" cat_traefik.1.ifbq38ugx76r#cat | time="2018-04-03T20:42:39Z" level=debug msg="vulcand/oxy/forward/http: Round trip: http://10.0.2.7:80, code: 200, Length: 478, duration: 8.138087ms" cat_traefik.1.ifbq38ugx76r#cat | time="2018-04-03T20:42:39Z" level=debug msg="vulcand/oxy/forward/http: completed ServeHttp on request" Request="{"Method":"GET","URL":{"Scheme":"http","Opaque":"","User":null,"Host":"10.0.2.7:80","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"Proto":"HTTP/1.1","ProtoMajor":1,"ProtoMinor":1,"Header":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-GB,en-US;q=0.9,en;q=0.8"],"Cache-Control":["max-age=0"],"Connection":["keep-alive"],"Cookie":["redirect_to=%252F"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"]},"ContentLength":0,"TransferEncoding":null,"Host":"mysubdomain.notmydomain.com","Form":null,"PostForm":null,"MultipartForm":null,"Trailer":null,"RemoteAddr":"10.255.0.2:54617","RequestURI":"/test","TLS":null}" cat_traefik.1.ifbq38ugx76r#cat | time="2018-04-03T20:42:39Z" level=debug msg="vulcand/oxy/forward: completed ServeHttp on request" Request="{"Method":"GET","URL":{"Scheme":"http","Opaque":"","User":null,"Host":"10.0.2.7:80","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"Proto":"HTTP/1.1","ProtoMajor":1,"ProtoMinor":1,"Header":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-GB,en-US;q=0.9,en;q=0.8"],"Cache-Control":["max-age=0"],"Connection":["keep-alive"],"Cookie":["redirect_to=%252F"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"]},"ContentLength":0,"TransferEncoding":null,"Host":"mysubdomain.notmydomain.com","Form":null,"PostForm":null,"MultipartForm":null,"Trailer":null,"RemoteAddr":"10.255.0.2:54617","RequestURI":"/test","TLS":null}" cat_traefik.1.ifbq38ugx76r#cat | time="2018-04-03T20:42:39Z" level=debug msg="vulcand/oxy/roundrobin/rr: competed ServeHttp on request" Request="{"Method":"GET","URL":{"Scheme":"","Opaque":"","User":null,"Host":"","Path":"/test","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":""},"Proto":"HTTP/1.1","ProtoMajor":1,"ProtoMinor":1,"Header":{"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"],"Accept-Encoding":["gzip, deflate"],"Accept-Language":["en-GB,en-US;q=0.9,en;q=0.8"],"Cache-Control":["max-age=0"],"Connection":["keep-alive"],"Cookie":["redirect_to=%252F"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"]},"ContentLength":0,"TransferEncoding":null,"Host":"mysubdomain.notmydomain.com","Form":null,"PostForm":null,"MultipartForm":null,"Trailer":null,"RemoteAddr":"10.255.0.2:54617","RequestURI":"/test","TLS":null}" The logs show that the first few request contain Path:/test whereas the last contain Path:/. I assume this is what is going wrong. Question: How or what do I need to reconfigure to have the secondary request on the tutum/hello-world container, containing the logo.png, load properly? The tutum/hello-world image is chosing for testing and as a clear example; the actual stack contains a mosquitto, grafana, influxdb, and some custom services that all show the same root behaviour. (those that have frontend.rule's)` Any suggestions are appreciated; I can provide more information when needed.
From Github Issue #3124 by Julien Salleyron: Thanks for your interest in Træfik! It's not an issue. Træfik does not rewrite the response body. We think that the process of rewriting the response body in a reverse proxy is too heavy/prone to errors. We encourage you to either: use host based rules only (seems impossible for your use case) use specific Traefik path rewrite headers in you app (X-Forwarded-Prefix, X-Replaced-Path) let your app listen on a specific path
haproxy not routing to service
I have the following configuration for my stack: api: deployment_strategy: every_node environment: - 'DATABASE_URL=postgresql://.....' - REDIS_HOST=redis image: 'image/image:latest' links: - redis ports: - '5000:5000' lb: image: 'dockercloud/haproxy:latest' links: - api ports: - '80:80' privileged: true roles: - global and this is the haproxy output 2017-05-26T12:00:51.752500376Z INFO:haproxy:dockercloud/haproxy 1.6.6 has access to the Docker Cloud API - will reload list of backends in real-time 2017-05-26T12:00:51.752599249Z INFO:haproxy:dockercloud/haproxy PID: 5 2017-05-26T12:00:51.883065649Z INFO:haproxy:=> Add task: Websocket open 2017-05-26T12:00:52.884078353Z INFO:haproxy:=> Executing task: Websocket open 2017-05-26T12:00:52.884105435Z INFO:haproxy:==========BEGIN========== 2017-05-26T12:00:53.364820267Z INFO:haproxy:Linked service: API(d73c0091-ae4f-43b8-a3a8-ea11a276652e) 2017-05-26T12:00:53.364872613Z INFO:haproxy:Linked container: API_1(3f981340-9b04-4105-8876-2ad1e5521f5c) 2017-05-26T12:00:53.365695674Z INFO:haproxy:HAProxy configuration: 2017-05-26T12:00:53.365705363Z global 2017-05-26T12:00:53.365708753Z log 127.0.0.1 local0 2017-05-26T12:00:53.365712075Z log 127.0.0.1 local1 notice 2017-05-26T12:00:53.365715245Z log-send-hostname 2017-05-26T12:00:53.365718228Z maxconn 4096 2017-05-26T12:00:53.365721207Z pidfile /var/run/haproxy.pid 2017-05-26T12:00:53.365724305Z user haproxy 2017-05-26T12:00:53.365727513Z group haproxy 2017-05-26T12:00:53.365730447Z daemon 2017-05-26T12:00:53.365733783Z stats socket /var/run/haproxy.stats level admin 2017-05-26T12:00:53.365736704Z ssl-default-bind-options no-sslv3 2017-05-26T12:00:53.365746260Z ssl-default-bind-ciphers xxxxxx 2017-05-26T12:00:53.365752089Z defaults 2017-05-26T12:00:53.365755064Z balance roundrobin 2017-05-26T12:00:53.365758035Z log global 2017-05-26T12:00:53.365761046Z mode http 2017-05-26T12:00:53.365764045Z option redispatch 2017-05-26T12:00:53.365767032Z option httplog 2017-05-26T12:00:53.365769951Z option dontlognull 2017-05-26T12:00:53.365775842Z option forwardfor 2017-05-26T12:00:53.365780388Z timeout connect 5000 2017-05-26T12:00:53.365793420Z timeout client 50000 2017-05-26T12:00:53.365796603Z timeout server 50000 2017-05-26T12:00:53.365799585Z listen stats 2017-05-26T12:00:53.365802356Z bind :1936 2017-05-26T12:00:53.365805270Z mode http 2017-05-26T12:00:53.365808233Z stats enable 2017-05-26T12:00:53.365811235Z timeout connect 10s 2017-05-26T12:00:53.365814235Z timeout client 1m 2017-05-26T12:00:53.365817155Z timeout server 1m 2017-05-26T12:00:53.365827005Z stats hide-version 2017-05-26T12:00:53.365830160Z stats realm Haproxy\ Statistics 2017-05-26T12:00:53.365833322Z stats uri / 2017-05-26T12:00:53.365837063Z stats auth stats:stats 2017-05-26T12:00:53.365839909Z frontend default_port_80 2017-05-26T12:00:53.365842760Z bind :80 2017-05-26T12:00:53.365845760Z reqadd X-Forwarded-Proto:\ http 2017-05-26T12:00:53.365848857Z maxconn 4096 2017-05-26T12:00:53.365851745Z default_backend default_service 2017-05-26T12:00:53.365854664Z backend default_service 2017-05-26T12:00:53.365857581Z server API_1 10.7.0.2:5000 check inter 2000 rise 2 fall 3 2017-05-26T12:00:53.365886854Z INFO:haproxy:Launching HAProxy 2017-05-26T12:00:53.368391859Z INFO:haproxy:HAProxy has been launched(PID: 12) 2017-05-26T12:00:53.368498117Z INFO:haproxy:===========END=========== when I access the haproxy IP, I get ERR_CONNECTION_REFUSED on Chrome and the API service logs is empty, but when I access the haproxy on port 5000, then yes, the request hits my API. I found it very weird, because I thought that HAProxy would do this routing for me. Am I missing something? maybe bind 80:5000?
This very simple example is working for me: api: image: nginx lb: image: 'dockercloud/haproxy:latest' links: - api ports: - '80:80' privileged: true (without the roles part because I'm not using docker cloud) ... lb_1 | INFO:haproxy:HAProxy has been launched(PID: 13) lb_1 | INFO:haproxy:===========END=========== api_1 | 172.17.0.3 - - [26/May/2017:12:40:36 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" "172.17.0.1" ... maybe bind 80:5000? You shouldn't. It should be enough accessing :80 and then haproxy do the rest.