Dear Francis: After so many years, I am back to the same questions I had many years ago, but never resolved on Nginx. So perhaps, it is time to change this and find a useful implementation.
So, now what I want is to get rid off the trailing slashes for anything that is not a directory or a folder (because my tomcat app seems to add a trailing slash to it and that creates an infinite loop that does not allow the page to render.). I have used many things to address the issue. You can see my efforts below, but they do not work. I always get the infinite loop for directories and an error from the browser: The browser can not open the page "http://example.com/xxxx" The error is: "Load can not follow more than 20 redirections" (:0) As you stated it: "And: what's a file and what's a directory? Your initial config example used proxy_pass, which refers to remote urls, not files or directories. *This* nginx does not know whether an upstream url corresponds to a file or to something else. So that may want to be considered before designing the solution." What can I do? Thank you for your feedback! ----this is what I have tried ----- # 1 - The Evil If if ( !-e $request_filename ) { rewrite ^/(.*)/$ /$1 permanent; } # 2 - TRY_FILES location / { ##TRY_FILES WILL GET A $URI AND TEST IF IT IS A FILE AND SERVE IT IF THE FILE EXISTS ##ELSE IT WILL TEST IF THE URI IS A DIRECTORY $URI/ IF DIRECTORY EXISTS IT WILL SERVE IT, AND ELSE AND FINALLY ##IF IT IS NOT EITHER IT WILL PASS IT TO A LOCATION ##THAT WILL REWRITE TO LOWERCASE ## root - OUR APP REQUIRES NO ROOT FOR NGINX TO WORK WITH IT SO NO ROOT IS PROVIDED FROM THE TOMCAT APP. try_files $uri $uri/ @trimslash; proxy_pass http://xxx.xx.xx.xxx:IIII; 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_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; proxy_redirect off; ### ### ADD THIS FOR WEBSOCKET SUPPORT ### proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } location @trimslash { rewrite ^/(.*)/$ /$1 permanent; proxy_pass http://xxx.xx.xx.xxx:IIII; 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_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; proxy_redirect off; ### ### ADD THIS FOR WEBSOCKET SUPPORT ### proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } } ##BETA EXAMPLE HTTP SERVER CONFIGURATION END Posted at Nginx Forum: https://forum.nginx.org/read.php?2,273964,285805#msg-285805 _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx