Как переписать чистый URL-адрес в .html в контейнере Dogin nginx? - PullRequest
0 голосов
/ 01 ноября 2019

Я могу запустить nginx в контейнере Docker, порт 4000. Он должен обслуживать статический веб-сайт со следующей структурой:

/usr/share/nginx/html/
  index.html
  app.html
  app/
    some-other.html

Порт был сопоставлен с портом 3000 на локальном хосте. Сейчас я пытаюсь использовать чистые URL-адреса следующим образом: http://localhost:3000/app. Однако, когда я пытаюсь получить доступ к этому URL, он перенаправляет меня на http://localhost:4000/app/ (обратите внимание на суффикс /) с кодом состояния 301 - Moved Permanently.

Я пытался использовать try_files в разных местах изаказ (это прокомментировано ниже). Ничего не получалось. Кроме того, я также использовал rewrite без успеха. Всегда приводит к одному и тому же перенаправлению.

site.conf

server {
    listen       4000;
    server_name  localhost;

    root /usr/share/nginx/html;

#    location / {
#      index index.html
#      try_files $uri $uri.html $uri/ =404;
#    }

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

    location ~ \.html$ {
      try_files $uri =404;
    }

    location @htmlext {
      rewrite ^(.*)$ $1.html last;
    }

    error_page 404 /404;
}

Я ожидаю, что nginx вернет содержимое app.html, не затрагивая URL в любой форме. Разве я не могу сделать это без добавления location /app тоже?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...