Nginx: Как обслуживать разные URL с разными настройками из одного файла?

У меня есть тысячи текстовых файлов, названных как ABC, Я хотел бы получить доступ к этим файлам с другого URL: - если это ABC или же ABC.txt Я хотел бы добавить default_type text/plain и подать этот файл - если это ABC.html Я хотел бы добавить default_type text/html и обслуживать этот файл (чтобы у меня было две разные версии одного и того же файла).

Возможно ли это сделать в nginx? Тот факт, что один URL может быть сопоставлен только с одним location директива вызывает у меня проблемы с поиском "чистого" пути.

2 ответа

nginx обрабатывает предложенный mimetype на основе URI. Я попробовал следующую комбинацию, и она работает:

    root /usr/share/nginx/www;

    default_type text/plain;

    location = /abc.txt {
      alias /usr/share/nginx/www/abc;
    }

    location /abc.html {
      alias /usr/share/nginx/www/abc;
    }

Вы должны попытаться создать отдельное местоположение для каждого расширения файла и использовать внутреннее перенаправление. Это будет что-то вроде этого:

location /ABC.txt {
  add_header Content-Type text/plain;
  rewrite /ABC last;
}
location /ABC.html {
  add_header Content-Type text/html;
  rewrite /ABC last;
}
location /ABC {
  alias /var/www/ABC.txt
}

Я не обещаю, что это сработает, потому что я не проверял это на реальном nginx.

Другие вопросы по тегам