прежде чем я начну, я должен отметить, что у меня есть абсолютно нет опыт работы с 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