Обслуживание статического сайта в nginx, неправильный путь для статических файлов - PullRequest
2 голосов
/ 13 марта 2019

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

static_website/
    index.html
    www.example.com/
    resources.example.com/
    uploads.example.com/

Файл index.html в корневом каталоге - это файл, созданный httrack, и он просто содержит перенаправление на www.example.com/index.html. Внутри папки www.example.com находятся все файлы html, в двух других папках находятся файлы css, javascript и image.

Вот конфигурация nginx:

server {
    index index.php index.html index.htm;

    server_name example.com;

    location / {
        root /var/www/static_website/www.example.com;
        try_files $uri $uri/ =404;
        index index.html;
    }

}

Я могу перемещаться по страницам, но файлы CSS, Javascript и изображения не загружаются. Путь к одному из CSS-файлов внутри HTML выглядит следующим образом:

href="../resources.example.com/style.css"

Единственный способ, которым мне удалось заставить это работать, состоял в том, чтобы иметь URL как это:

example.com/www.example.com/

Таким образом, все пути верны. Я хотел бы избежать этого и иметь просто example.com. Есть ли способ сделать это?

1 Ответ

1 голос
/ 14 марта 2019

Похоже, что сайт изначально предназначался для работы с ужасными URL-адресами, такими как //example.com/www.example.com/.

Но относительные к пути URI для ресурсов должны нормально работать относительно /, вам просто нужнопредоставить блок location, который соответствует /resources.example.com/.

Например:

location / {
    root /var/www/static_website/www.example.com;
    try_files $uri $uri/ =404;
    index index.html;
}
location /resources.example.com/ {
    root /var/www/static_website;
}

Я первоначально прокомментировал, что вы должны попробовать это:

location ~ \.(css|js|jpg|png|svg)$ { 
    root /var/www/static_website;
}

Достигает аналогичной цели, но Nginx будет обрабатывать местоположения префиксов более эффективно, чем местоположения регулярных выражений.

...