title: nginx proxy_pass leads to 404 Not Found page
body: <p>I have a angular application running in a docker ubuntu image that has nginx installed. I want to deploy this image to Kubernetes and use a nginx proxy to redirect all calls to /api to my backend service in Kubernetes.</p>
  
  <p>My static web resources lie in /var/www/html and I add the following config to /etc/nginx/conf.d:</p>
  
  <pre><code>upstream backend-service {
    server backend-service:8080;
  }
  
  server {
    listen 80;
  
    location / {
      try_files $uri $uri/ /index.html;
    }
  
    location ^~ /api {
      proxy_pass http://backend-service;
    }
  }
  </code></pre>
  
  <p>Accessing the frontend service on / or /#/dashboard returns the expected component of my Angular page, but <strong>a call to /api/v1/data only shows the default nginx 404 Not Found page</strong>.</p>
  
  <p>What do I need to modify to have my backend calls redirected to my backend?</p>
  
  <p><strong>I use nginx 1.10.3 on ubuntu 16.04</strong> and my frontend Dockerfile looks like this:</p>
  
  <pre><code>FROM ubuntu:16.04
  
  # Install curl, nodejs and nginx
  RUN apt-get update &amp;&amp; \
    apt-get install -y curl &amp;&amp; \
    curl -sL https://deb.nodesource.com/setup_8.x | bash - &amp;&amp; \
    apt-get install -y nodejs nginx &amp;&amp; \
    rm -rf /var/lib/apt/lists/*
  
  # Create directory
  RUN mkdir -p /usr/src/app
  WORKDIR /usr/src/app
  
  # Copy and build rest of the app
  COPY . /usr/src/app
  RUN npm install
  RUN node_modules/@angular/cli/bin/ng build --prod
  RUN cp -a dist/. /var/www/html
  
  # Configure and start nginx
  COPY frontend.conf /etc/nginx/conf.d
  
  EXPOSE 80
  
  CMD ["nginx", "-g", "daemon off;"]
  </code></pre>
  
  <p><strong>Edit: Information about backend-service</strong></p>
  
  <p>The backend service <strong>listens to get and post requests on /api/v1/data</strong> and is reachable in Kubernetes via a Service named backend-service.</p>
  
  <p><strong>Edit2: Nginx access.log</strong></p>
  
  <p><a href="https://gist.github.com/Steffen911/a56e3175bf12e511048d01359a475724" rel="noreferrer">https://gist.github.com/Steffen911/a56e3175bf12e511048d01359a475724</a></p>
  
  <pre><code>172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET / HTTP/1.1" 200 380 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /styles.d41d8cd98f00b204e980.bundle.css HTTP/1.1" 200 0 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /inline.c9a1a6b995c65c13f605.bundle.js HTTP/1.1" 200 1447 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /polyfills.117078cae3e3d00fc376.bundle.js HTTP/1.1" 200 97253 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /main.3e9a37b4dd0f3bf2465f.bundle.js HTTP/1.1" 200 64481 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /vendor.146173c1a99cc2172a5f.bundle.js HTTP/1.1" 200 661261 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /api/v1/data/ HTTP/1.1" 404 209 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /assets/home.jpg HTTP/1.1" 200 2608 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /assets/busy.gif HTTP/1.1" 200 48552 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /assets/background_light.png HTTP/1.1" 200 170599 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /assets/google.svg HTTP/1.1" 200 2232 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /assets/email.svg HTTP/1.1" 200 1596 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:40 +0000] "GET /favicon.ico HTTP/1.1" 200 198 "http://192.168.99.100:30497/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  172.17.0.1 - - [13/Aug/2017:13:11:44 +0000] "GET /api/v1/data/ HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"
  </code></pre>
  
  <p>The error.log file is empty.</p>
  
  <p><strong>Edit3: New nginx version and other SO thread</strong></p>
  
  <p>I also tried nginx 1.12.1 and it shows the same behaviour. The answers to this question also haven't helped: <a href="https://stackoverflow.com/questions/16157893/nginx-proxy-pass-404-error-dont-understand-why">nginx proxy_pass 404 error, don&#39;t understand why</a></p>
  
  <p><strong>Edit4: I uploaded a minimal example that reproduces my problem on GitHub</strong></p>
  
  <p><a href="https://github.com/Steffen911/nginx-sample" rel="noreferrer">https://github.com/Steffen911/nginx-sample</a></p>