Nginx принять конечный sla sh или без конечного sla sh в proxy_pass - PullRequest
1 голос
/ 21 апреля 2020

Я сталкиваюсь со следующей проблемой, где я хотел бы иметь возможность получить доступ к местоположению, переданному через прокси (React / Next Js webApp в размещенном docker контейнере) с домашнего веб-сайта с конечным sla sh и без завершающего слэ sh.

В настоящее время, когда я нажимаю:

http://my-website.com/test # это работает

Но когда я нажимаю:

http://my-website.com/test/ # это терпит неудачу с 404

Я хотел бы иметь возможность поразить оба этих URL. Что мне не хватает?

   ### 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 Ответ

1 голос
/ 21 апреля 2020

После долгих экспериментов мы пришли к этому решению:

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

необходимо было передать все после /test в приложение, с или без завершающего sla sh, оно должно обрабатываться правильно

...