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.

И с этим я могу просматривать ртутный репозиторий

Другие вопросы по тегам