Nginx在proxy_pass中接受尾斜杠或不尾斜杠

时间:2020-04-21 00:56:06

标签: nginx nginx-reverse-proxy nginx-config

我遇到了以下问题,我希望能够从家网站中以斜杠 开头访问代理传递的位置(托管的Docker容器中的React / NextJs webApp),并且 (不带斜杠)。

当前,当我点击时:

http://my-website.com/test#可行

但是当我点击时:

http://my-website.com/test/#这会失败并显示404

我希望能够同时找到这两个网址。我想念什么?

   ### Default Server ###
    server {
        listen 80;
        root /usr/site;
        if ($http_x_forwarded_proto = "http") {
            return 301 https://$host$request_uri;
        }
        location ~/test(.*)$ {
                set $upstream_endpoint http://$docker_container_url;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_pass $upstream_endpoint$1/;
                proxy_set_header    Host    $host;
                proxy_cache_bypass  $http_upgrade;
        }
    }

1 个答案:

答案 0 :(得分:1)

经过长时间的实验,我们得出了以下解决方案:

  location ~ ^/test(?:/(.*))?$ {
    # some directives here
    proxy_pass http://nginx_docker_container_url/$1;
    # some directives here
  }

需要将/test之后的所有内容都传递给应用,无论是否带有斜杠,都应正确处理