nginx 添加尾部斜杠

nginx 添加尾部斜杠

我无法弄清楚以下问题。基本上,我们有一个杰基尔我们决定在服务器上将博客与主要网站物理分离,即它不从主应用程序服务器的根目录提供服务。配置如下:

upstream unicorn {
  server 127.0.0.1:3000;
}

server {
      listen       4430;
      root /app/current/public;

      server_name example.com;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Proto https;
      proxy_set_header Strict-Transport-Security: "max-age=31556926; includeSubDomains";
      proxy_redirect off;

      location ~* ^/assets {
        expires max;
        add_header Cache-Control public;
        break;
      }

      location ~* ^/admin {
        auth_basic           "Restricted";
        auth_basic_user_file /etc/nginx/htpasswd;
        proxy_pass http://unicorn;
      }

      location ~* ^/dashboard_api {
        auth_basic           "Restricted";
        auth_basic_user_file /etc/nginx/htpasswd;
        proxy_pass http://unicorn;
      }

      location / {
        try_files $uri/index.html $uri.html $uri @app;
      }

      location ~ /blog {
        alias /app/blog/current/;
      }

      location @app {
        auth_basic off;
        proxy_pass http://unicorn;
      }

      # Turn on maintenance mode if the maintenance template exists
      if (-f $document_root/system/maintenance.html) {
          return 503;
      }

      error_page 503 @maintenance;
      location @maintenance {
          rewrite  ^(.*)$  /system/maintenance.html last;
          break;
      }
    }

我在这里谈论的是 /blog 位置。基本上,博客文件(那些只是静态 HTML 文件)的位置不在 /app/current/public 中,而是在 /app/blog/current 中。我遇到的问题是,每次用户尝试通过以下 URL 访问博客时:http://example.com/blog,请求失败,用户被重定向到http://example.com:4430/blog/。但是,当用户添加尾部斜杠时,即当他访问 http://example.com/blog/,一切都按预期进行。同样的事情发生在每篇博客文章上http://example.com/blog/post1失败,http://example.com/blog/post1/成功。我正在尝试弄清楚如何配置 nginx,以便添加尾部斜杠,并且没有斜杠的请求将不会失败。另外,我想知道为什么会发生上述重定向到 exmple.com:4430。

任何帮助将不胜感激!

答案1

解决这个问题的方法是添加

port_in_redirect 关闭;

现在一切正常。

相关内容