Я могу запустить 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
тоже?