我正在尝试通过 uwsgi 使用 nginx 配置 cgit。我设法让主页在 example.com/ 上运行并添加了我的存储库,但是当我尝试访问 example.com/somerepo 中的存储库时出现 502 错误。
我知道 cgit 工作正常,因为我可以在cgit.cgi
有和没有QUERY_STRING="url=somerepo"
环境变量的情况下运行,它分别为主页和somerepo
页面生成正确的 html。
我一直在尝试使用 nginx 和 cgit.cgi 上的带有调试级别、strace 和 gdb 的 nginx 错误日志以及 uwsgi 的输出来调试问题,这是我目前发现的:
当我单击
somerepo
cgit 主页上的链接时,uwsgi 会向 GET 请求,/somerepo
而 nginx 会尝试打开一个/htdocs/somerepo
无法找到的目录,因为它不存在。(我想 cgit.cgi 应该即时生成这个)。我从 strace 知道这一点stat("/usr/share/webapps/cgit/1.2.1/htdocs/olisrepo/", 0x7ffdf4c817c0) = -1 ENOENT (No such file or directory)
当我单击一个
somerepo
链接时,我read(8, 0x561749c8afa0, 65536) = -1 EAGAIN (Resource temporarily unavailable)
从 cgit.cgi 的 strace 获得。当我尝试访问一个无效的 url时,
somerepotypo
它会正确生成一个 404 页面,显示“未找到存储库”。
这些是我的配置文件:
/etc/nginx/nginx.conf
user nginx nginx;
worker_processes 1;
error_log /var/log/nginx/error_log debug;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
gzip off;
output_buffers 1 32k;
postpone_output 1460;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
ignore_invalid_headers on;
# Cgit
server {
listen 80;
server_name example.com;
root /usr/share/webapps/cgit/1.2.1/htdocs;
access_log /var/log/nginx/access_log main;
error_log /var/log/nginx/error_log debug;
location ~* ^.+(cgit.(css|png)|favicon.ico|robots.txt) {
root /usr/share/webapps/cgit/1.2.1/htdocs;
expires 30d;
}
location / {
try_files $uri @cgit;
}
location @cgit {
include uwsgi_params;
uwsgi_modifier1 9;
uwsgi_pass unix:/run/uwsgi/cgit.sock;
}
}
}
cgit.ini(我使用 uwsgi --ini /etc/uwsgi.d/cgit.ini 加载它)
[uwsgi]
master = true
plugins = cgi
chmod-socket = 666
socket = /run/uwsgi/%n.sock
uid = nginx
gid = nginx
processes = 1
threads = 1
cgi = /usr/share/webapps/cgit/1.2.1/hostroot/cgi-bin/cgit.cgi
/etc/cgitrc
css=/cgit.css
logo=/cgit.png
mimetype-file=/etc/mime.types
virtual-root=/
remove-suffix=1
enable-git-config=1
scan-path=/usr/local/cgitrepos
你能帮我解决这个问题吗?提前致谢