Nginx + Apache trailing slash redirect [closed]

Posted on

Nginx + Apache trailing slash redirect [closed] – Problems with loading a website are often blamed on the Internet connection, but even the most perfectly set up network cannot help if there is no service to reply at your destination. One of the most popular HTTP servers used for this task is Apache2. Much of Apache’s popularity can be attributed to its easy installation and use, but never the less it is possible to run into problems with even the easiest of the software. If you’ve encountered an issue loading your web page, follow these simple troubleshooting methods outlined in this guide to attempt to get your web server back up and working again. Below are some tips in manage your apache2 server when you find problem about apache-2.2, nginx, , , .

I have a Nginx server running on 80 port working as a proxy to Apache 2.2 which is listening to

When I access http://hostname/subfolder/ it works great.
When I access http://hostname/subfolder it redirects me to http://hostname:8080/subfolder/ which is wrong.

As far as I see the wrong redirect is returned by Apache but UseCanonicalName and UseCanonicalPhysicalProxy are both set to Off

Any Ideas on how to fix that?

I ran into this too, and I was able to fix it with a proxy_redirect directive right after my proxy_pass directive in my nginx config:


This is my full nginx config (In my case, Apache is on port 81 and hosting two sites. I added two site-specific proxy_redirect lines because I’m not sure how to add a single generic one.)

server {
    listen 80;

    access_log /var/log/nginx/apache-proxy.access.log;

    location / {
        proxy_pass http://localhost:81;

        #fix for apache redirects that include the port number

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

        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 6000;
        proxy_send_timeout 6000;
        proxy_read_timeout 6000;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        send_timeout 6000;
        proxy_buffering off;
        proxy_next_upstream error;


Note: This was for a pre-1.0 version of nginx 5+ years ago. Here’s the docs for proxy_redirect for the current version:

If your ServerName directive on Apache is set to “hostname:8080”, remove “:8080” or change it to “hostname:80”. You could also add “proxy_set_header Host $host:80”

I had this issue long time ago..
As i remember it had to do with the HTTP RFC, slash at the end denotes a directory (/test/)
, no slash at the end its a file (/test)

Long story short, add a rewrite rule that will add a trailing slash to the request, if there is none.

look at Solved:trailing slash issue with Nginx server


I ran into this exact problem recently. While the suggested solutions will work, Nginx offers a built-in solution:

proxy_redirect default;

Documentation at

Here’s a full example of how to use it:

server {
  listen 80;
  location / {
    proxy_pass http://localhost:8080
    proxy_redirect default

Leave a Reply

Your email address will not be published. Required fields are marked *