Служить блогу Jekyll на Nginx - PullRequest
       21

Служить блогу Jekyll на Nginx

0 голосов
/ 10 февраля 2020

Я пытаюсь опубликовать блог на jekyll nginx. Файлы в каталоге сборки должны быть доступны по следующим маршрутам:

  - index.html -> /
  - 1.0/
    - index.html -> /1.0/
    - foo/
        a.html   -> /1.0/foo/a/
        b.html   -> /1.0/foo/b/
        c.html   -> /1.0/foo/c/
    - bar/
        1.html   -> /1.0/bar/1/
        2.html   -> /1.0/bar/2/

Я пытался использовать директиву try_files в nginx, но она всегда вызывает откат, хотя файлы доступны. Вот конфигурация:

location ~* ^(.+)/$ {
  try_files $uri /$1/index.html /$1.html =404;
}

Если я удаляю запасной вариант 404, он работает только для последнего значения.

Поэтому мой вопрос: каков наилучший способ настройки nginx для обслуживания? stati c файлы, как это?

1 Ответ

0 голосов
/ 10 февраля 2020

Если я удаляю запасной вариант 404. Он работает только для последнего значения.

Это потому, что последний параметр директивы try_files должен быть HTTP код ошибки или URI, чтобы попытаться, если файл не найден. В вашем случае nginx предполагает, что это URI.

Попробуйте:

location ~ ^(?<path>/.*/)(?<file>[^/]+)/$ {
    try_files $uri $path$file.html $uri/ =404;
}

Если вы хотите обслуживать http://example.com/1.0/foo/a запросов, аналогичных http://example.com/1.0/foo/a/, измените регулярное выражение на ^(?<path>/.*/)(?<file>[^/]+)/?$.

...