Назад | Перейти на главную страницу

Загрузка css из cgit на nginx в подкаталог

прежде чем я начну, я должен отметить, что у меня есть абсолютно нет опыт работы с nginx или сетями, поэтому я добился того, что искал и пробовал разные решения.

У меня проблема, с которой я борюсь уже 1 час.

Я пытаюсь настроить cgit на nginx, чтобы он был доступен через подкаталог, например /git. Проблема в том, что, хотя мне удалось получить загрузку интерфейса, CSS и изображения возвращают 404.

Когда я иду в 192.168.0.12/git, вот что я получаю:

200  /git/        192.168.0.12/git/
404  cgit.css     192.168.0.12/git/cgit.css
404  cgit.png     192.168.0.12/git/cgit.png
404  favicon.ico  192.168.0.12/git/cgit.png

Это мой текущий nginx.conf:

server {
  listen 80;
  server_name localhost;
  root /var/www/html;

  location /git {
    root /var/www/cgit;
    include fastcgi_params;
    fastcgi_split_path_info ^(/git/?)(.+)$;
    fastcgi_param SCRIPT_FILENAME $document_root/cgit.cgi;
    fastcgi_param QUERY_STRING $args;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTP_HOST $server_name;
    fastcgi_pass unix:/var/run/fcgiwrap.socket;

    location ~* \.(css|png|ico) {
      expires 24h;
    }
  }

  location / {
    try_files $uri/index.html =404;
  }
}

и cgitrc:

css=/git/cgit.css
logo=/git/cgit.css
favicon=/git/favicon.ico

cache-root=/var/cache/cgit
remove-suffix=1

virtual-root=/git/
scan-paht=/srv/git/

Я предполагаю, что мне нужно как-то сообщить nginx, где он может найти эти файлы, но я понятия не имею, как это сделать или даже где начать искать решение.

Все эти пути могут быть разными в вашей системе (я использую ubuntu), но общая идея такая же!

Вы можете сделать это, добавив это в свою конфигурацию

location /cgit-css/ {
    alias /usr/share/cgit/;
    expires 24h;
    try_files $uri =404;
}

это отображает ваш местный /usr/share/cgit папка, которая включает css и другие файлы (на ubuntu!) в cgit-css, который затем вызывается из файла конфигурации:

css=/cgit-css/cgit.css
logo=/cgit-css/cgit.png
favicon=/cgit-css/favicon.ico
...

Это моя полная конфигурация nginx:

server {
    listen 5555;
    server_name _;
    root /usr/lib/cgit;

    location / {
        try_files $uri @cgit;
    }

    location /cgit-css/ {
        alias /usr/share/cgit/;
        expires 24h;
        try_files $uri =404;
    }

    location @cgit {
        index cgit.cgi;
        fastcgi_param SCRIPT_FILENAME $document_root/cgit.cgi;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_param HTTP_HOST $server_name;
        fastcgi_param PATH_INFO $uri;
        fastcgi_param QUERY_INFO $args;
        include "fastcgi_params";

    }
}

и завершить cgitrc

# cgit config
# see cgitrc(5) for details
#
css=/cgit-css/cgit.css
logo=/cgit-css/cgit.png
favicon=/cgit-css/favicon.ico

# Highlight source code with python pygments-based highlighter
source-filter=/usr/lib/cgit/filters/syntax-highlighting.sh

# Format markdown, restructuredtext, manpages, text files, and html files
# through the right converters
about-filter=/usr/lib/cgit/filters/about-formatting.sh

## Search for these files in the root of the default branch of repositories
## for coming up with the about page:
readme=:README.md
readme=:readme.md
readme=:README.mkd
readme=:readme.mkd
readme=:README.rst
readme=:readme.rst
readme=:README.html
readme=:readme.html
readme=:README.htm
readme=:readme.htm
readme=:README.txt
readme=:readme.txt
readme=:README
readme=:readme
readme=:INSTALL.md
readme=:install.md
readme=:INSTALL.mkd
readme=:install.mkd
readme=:INSTALL.rst
readme=:install.rst
readme=:INSTALL.html
readme=:install.html
readme=:INSTALL.htm
readme=:install.htm
readme=:INSTALL.txt
readme=:install.txt
readme=:INSTALL
readme=:install

## List of common mimetypes
mimetype.gif=image/gif
mimetype.html=text/html
mimetype.jpg=image/jpeg
mimetype.jpeg=image/jpeg
mimetype.pdf=application/pdf
mimetype.png=image/png
mimetype.svg=image/svg+xml
mimetype-file=/etc/mime.types

root-title=my git
root-desc=Git Repositories
virtual-root=/

enable-commit-graph=1
enable-index-links=1
enable-log-linecount=1
enable-http-clone=1
enable-index-owner=0
repository-sort=age
case-sensitive-sort=0

# Enable caching of up to 1000 output entries
cache-size=1000

agefile=info/web/last-modified
section-from-path=1
scan-path=/mnt/data/git