1

В настоящее время я пытаюсь заставить работать nginx с gitbucket, следуя этому руководству.

Хотя это официальная вики-страница gitbucket, эта страница очень неполная, и мне нужно адаптировать некоторые детали из руководства для apache, в основном префиксные, чтобы заставить gitbucket работать с nginx.

Итак, мои итоговые sites-available/gitbucket находятся здесь:

server {
    listen   80; # The default is 80 but this here if you want to change it.
    server_name mydomain.xxx;

    location /gitbucket {
        proxy_pass              http://localhost:8080/gitbucket;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout   150;
        proxy_send_timeout      100;
        proxy_read_timeout      100;
        proxy_buffers           4 32k;
        client_max_body_size    500m; # Big number is we can post big commits.
        client_body_buffer_size 128k;
    }
}

Когда я gitbucket он работает, поэтому http://mydomain.xxx/gitbucket перенаправляет на мой экземпляр gitbucket, но затем nginx перестает обслуживать любой индексный файл, который я помещаю в мой /var/www/html , и вместо этого обслуживает предоставленную страницу индекса по умолчанию когда мы заново установим его. И при отключении gitbucket индекс из папки html снова обслуживается.

Я пытался сделать билет на репозиторий Gitbucket, но я не получил удовлетворительного ответа. Так может кто-нибудь пролить свет на эту проблему?

Заранее спасибо!

1 ответ1

1

Учебник, на который вы ссылаетесь, дает очень конкретный пример для gitbucket.

Если вы настраиваете сайты с помощью nginx, вы должны иметь в виду, что у каждого сайта есть множество настроек и что существует логика, которая будет определять, что и когда будет иметь приоритет. Эта цифровая статья об океане под названием "Понимание алгоритмов выбора сервера Nginx и блока местоположения" о том, как это определяется.

Из того, что вы объяснили в ваших комментариях, вы получили два файла сайта. Один из них является файлом по умолчанию, в котором вы устанавливаете свой обычный root для своего сайта, а другой - для gitbucket, который просто содержит блок местоположения gitbucket и (что важно) директиву listen и директиву имени сервера.

Первый шаг, который nginx делает, чтобы определить, какой сайт доставить, - это выяснить, какой блок сервера использовать. В настоящее время у вас есть два серверных блока с одинаковым определением. Ваш блок по умолчанию и блок gitbucket прослушивают порт 80 для одного и того же имени сервера. Так что один всегда будет перезаписывать другой.

Если вы хотите, чтобы оба работали, у вас есть несколько вариантов:

  • Установите любой сайт на другой порт, используя директиву listen.
  • Измените имя сервера для любого сайта. Это также может включать поддомен. Всякий раз, когда это работает или нет, может зависеть от конфигурации DNS для сайта.
  • Просто включите блок местоположения из вашей конфигурации gitbucket в файл по умолчанию.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .