title: Keycloak and Nginx: auth_request
body: <p>I am trying to setup auth_request with keycloak proxy, but it does not work (Nginx returns 500 status code).</p>
  
  <p>Here is my example:</p>
  
  <p>nginx.conf</p>
  
  <pre><code>upstream target_host {
      server prometheus:9090;
  }
  
  upstream oauth_host {
      server keycloak-proxy:8181;
  }
  
  server {
  
    listen 80;
    server_name myexample.com;
  
  
    location = /oauth2/ {
      proxy_pass       http://oauth_host/oauth2/;
      proxy_redirect              default;
      proxy_set_header   Host             $host;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
      proxy_set_header   X-Original-URI $request_uri;
      proxy_set_header   Content-Length   "";
      proxy_pass_request_body           off;
    }
  
    location / {
        auth_request /oauth2/; 
        proxy_pass http://target_host/;
    }
  }
  </code></pre>
  
  <p>proxy.json</p>
  
  <pre><code>{
      "target-url": "http://myexample.com/",
      "target-request-timeout": "60000",
      "send-access-token": true,
      "bind-address": "0.0.0.0",
      "http-port": "8181",
      "applications": [
          {
              "base-path": "/oauth2/",
              "proxy-address-forwarding": true,
              "adapter-config": {
                  "realm": "test",
                  "disable-trust-manager": true,
                  "resource": "account",
                  "auth-server-url": "https://keycloak:8443/auth",
                  "ssl-required" : "external",
                  "credentials": {
                      "secret": "75ddbbd9-e98c-437e-9815-a8b66e9e58ec"
                  }
              }
              ,
              "constraints": [
                  {
                      "pattern": "/*",
                      "roles-allowed": [
                          "custom_role"
                      ]
                  }
              ]
          }
      ]
  }
  </code></pre>
  
  <p>Nginx log:</p>
  
  <pre><code>172.19.0.1 - - [03/Sep/2018:14:50:14 +0200] "GET / HTTP/1.1" 500 193 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0" "-"
  172.19.0.1 - - [03/Sep/2018:14:50:14 +0200] "GET / HTTP/1.1" 500 193 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0" "-"
  2018/09/03 14:50:14 [error] 8#8: *21 auth request unexpected status: 302 while sending to client, client: 172.19.0.1, server: myexample.com, request: "GET / HTTP/1.1", host: "myexample.com"
  2018/09/03 14:50:14 [error] 8#8: *23 auth request unexpected status: 302 while sending to client, client: 172.19.0.1, server: myexample.com, request: "GET / HTTP/1.1", host: "myexample.com"
  </code></pre>
  
  <ul>
  <li><a href="http://keycloak-proxy:8181" rel="nofollow noreferrer">http://keycloak-proxy:8181</a> -> Keycloak Proxy</li>
  <li><a href="https://keycloak:443" rel="nofollow noreferrer">https://keycloak:443</a> -> Keycloak</li>
  <li><a href="http://prometheus:9090" rel="nofollow noreferrer">http://prometheus:9090</a> -> Prometheus</li>
  <li><a href="http://myexample.com" rel="nofollow noreferrer">http://myexample.com</a> -> Nginx</li>
  </ul>
  
  <p>I am wondering how to properly setup auth_request.
  Can anyone help ? </p>
  
  <p>Thanks</p>