mercurial hgweb не может просматривать репозитории с помощью nginx
У меня установлен Mercurial и я хотел бы использовать hgweb, чтобы также показать хранилище на веб-странице.
Я использую nginx и могу зайти на страницу, где находится репозиторий, но кажется, что он выходит пустым (я вижу столбцы заголовка [имя, описание и т. Д.], Но не вижу содержимое репозитория).)
Я использую hgweb.cgi и настраиваю там config = "/var/hg/hgweb.config", чтобы прочитать конфигурацию, которую я определил следующим образом:
[paths]
/repository=/var/hg/myrepository
[extensions]
hgext.highlight =
[web]
style = gitweb
allow_push = *
Примечание: каталог /var/hg/myrepository/ связывается с каталогом.hg.
ОБНОВИТЬ
Я сделал больше тестов, и кажется, что в конфигурации nginx есть некоторые ошибки, которые мешают работе установки. Вот что у меня есть:
server {
listen 443 ssl;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
ssl_session_timeout 20m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
server_name webhg.server.com *.webhg.server.com;
root /var/www ;
location / {
fastcgi_pass hg-fpm;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_hg;
auth_basic "private!";
auth_basic_user_file /var/hg/hg.htpasswd;
}
location /static/ {
rewrite /static/(.*) /$1 break;
root /usr/share/mercurial/templates/static;
expires 30d;
}
location ~ /\. { deny all; }
}
## Redirect for insecure
server {
server_name webhg.server.com;
listen 80;
rewrite ^(.*) https://$host$1 permanent;
}
Я могу успешно получить доступ к webhg.server.com, и хранилище перечислено с последней обновленной датой [так что это как-то читается hgweb]. Но когда я нажимаю на имя репозитория или любые ссылки на странице [RSS-каналы и т. Д.], Я просто возвращаюсь на главную страницу.
1 ответ
Нашел проблему,
Оказалось, что в конфиге не хватает fastcgi_param
Теперь параметры:
fastcgi_split_path_info ^(/hg)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root/hgweb.cgi;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param AUTH_USER $remote_user;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
и это действительно важно
fastcgi_param REQUEST_METHOD $request_method;
чтобы избежать ошибки: "abort: HTTP Error 405: push требует POST-запроса" при использовании SSL.
И с этим я могу просматривать ртутный репозиторий