Please help with proxy_pass and trailing slash!

I have a php site with location /app served by Java app server on same
server port 9001

What is in /app/ should become / (root) for Java app server

I have this in config:

server {

index index.html index.htm index.php;

location /app {

            proxy_pass  http://localhost:9001;
            proxy_next_upstream error timeout invalid_header

http_500 http_502 http_503;

            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For

$proxy_add_x_forwarded_for;

            proxy_set_header X-Forwarded-Proto https;

            proxy_redirect     off;
  }

 location / {
          # First attempt to serve request as file, then
            # as directory, then fall back to index.html
            try_files $uri $uri/ /index.php?$args;
    }

location ~ index.php$ {

    try_files $uri =404;

    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME

$document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}

with this configuration, Java server receives requests like “GET /app/”
while it should receive “GET /”

If I add trailing slash to proxy_pass:

proxy_pass http://localhost:9001/;

Then java server receives “GET //” and unable to serve that either.

Do I need to involve rewrite here ? And how? or extra trailing slash is
caused by other rewrite rules somehow?

Thank you!

Posted at Nginx Forum:

On Wednesday 14 March 2012 21:05:55 Roddick wrote:

            proxy_set_header X-Forwarded-Proto https;

            proxy_redirect     off;
  }

 location / {
          # First attempt to serve request as file, then
            # as directory, then fall back to index.html
            try_files $uri $uri/ /index.php?$args;
    }

Just a side note, you don’t need explicit set $args here.

try_files $uri $uri/ /index.php;

}
Do I need to involve rewrite here ? And how? or extra trailing slash is
caused by other rewrite rules somehow?

Documentation already has answers to your questions:
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

E.g., in your case:

location /app/  {
    ...
    proxy_pass  http://localhost:9001/;
}

wbr, Valentin V. Bartenev

Valentin V. Bartenev Wrote:

$args here.

    fastcgi_param SCRIPT_FILENAME

Documentation already has answers to your

wbr, Valentin V. Bartenev

Thanks Valentin.

I get it now! I had
location /app {

and it should be
location /app/ {

with trailing slash. Weird that it’s sensitive for that slash there.

Thanks.

Posted at Nginx Forum:

Am 15.03.2012 11:08 schrieb “Roddick” [email protected]:

            try_files $uri $uri/

with this configuration, Java server receives
Do I need to involve rewrite here ? And how? or

I get it now! I had
location /app {

and it should be
location /app/ {

with trailing slash. Weird that it’s sensitive for that slash there.

Trivia: “location /app { … }” will match url "
http://domain.com/appwhatever"