The URLs with and without trailing slash are considered by web-servers as well as by search engines as different web-pages.
By this reason the URLs with trailing slash may return 404 Not Found error, while without the trailing slash they are reachable.
In this note i will show how to remove the trailing slash from URLs in Nginx and proxy_pass the traffic without them.
Cool Tip: Reload Nginx inside Docker container! Read more →
Nginx `proxy_pass` Without Trailing Slash
Add the following rewrite rule in the server section of the Nginx config to remove the trailing slash from all URLs and proxy_pass the traffic to the upstream cluster:
server {
listen 80;
server_name example.tld;
# Remove trailing slash from URLs
rewrite ^/(.*)/$ /$1 permanent;
location / {
proxy_pass http://$upstream;
proxy_redirect off;
}
}
The rule above creates SEO-friendly 301 Moved Permanently redirect from all URLs with the trailing slash to the same URLs without them:
$ curl -IL http://example.tld/path/ HTTP/1.1 301 Moved Permanently server: nginx location: http://example.tld/path ... HTTP/1.1 200 server: nginx ...