nginx — как маршрутизировать определенную конечную точку uri без того, чтобы она заканчивалась косой чертой

#nginx #nginx-location

#nginx #nginx-location

Вопрос:

моя текущая настройка:

  1. вводимые пользователем www.example.com/example/xx/healthcheck
  2. kubernetes отслеживает вход с помощью серверной части в качестве /example и переходит к службе nginx
  3. nginx с этой небольшой конфигурацией:
     server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;


    location /example/xx/healthcheck {
        root  /usr/share/nginx/html;
        index output.html;
    }
  

я разместил output.html внутри /usr/share/nginx/html/example/xx/проверка работоспособности

Моя проблема в том, что когда я нажимаю www.example.com/example/xx/healthcheck он не загружает страницу. это работает только в том случае, если в конце у него есть косая черта www.example.com/example/xx/healthcheck /

есть ли правильный и лучший способ сделать это? Я хочу www.example.com/example/xx/healthcheck и он попадает на страницу.

Спасибо

Ответ №1:

Вы можете использовать

 location = /example/xx/healthcheck {
    default_type text/html;
    alias /any/path/to/output.html;
}
  

Осторожно — запрос с косой www.example.com/example/xx/healthcheck/ чертой больше не будет работать с этой конфигурацией, хотя он будет работать, если вы используете ваш location /example/xx/healthcheck { ... } в качестве второго или используете правило перезаписи, например

 rewrite ^/example/xx/healthcheck/$ /example/xx/healthcheck;
  

Комментарии:

1. Я только что попробовал это, но он загружает файл вместо отображения файла в браузере. Есть ли способ отобразить содержимое в браузере? Спасибо!

2. @sdas2 Извините, не подумал о том, что location блок будет использовать тип mime по умолчанию (обычно application/octet-stream ). Обновлен ответ.

3. я использовал это « location /example /xx/healthcheck { псевдоним /usr/share/nginx/html/output.html ; default_type application/октет-поток; } « Я перезапустил модуль, и он по-прежнему загружает файл. это неправильный тип по умолчанию?

4. @sdas2 Я сказал, что обновил ответ. Разве вы не заметили, что ответ был отредактирован? application/octet-stream это тип MIME по умолчанию, его следует изменить text/html .

5. @sdas2 я использовал location = /example/xx/healthcheck { ... } , а не location /example/xx/healthcheck { ... }