Обратное проксирование gitbucket через nginx

269
Vico

В настоящее время я пытаюсь заставить работать 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
Убедитесь, что ваши `sites-enabled` прочитаны в правильном порядке. Seth 5 лет назад 0
Извините, я не понял, что вы имеете в виду под "правильным порядком". Я немного новичок в nginx (всегда использовал apache). Vico 5 лет назад 0
Скорее всего, у вас есть несколько файлов в `sites-enabled`, чтобы проверить содержимое этого файла. В настоящее время вы говорите nginx ответить блоком, который определяет только `/ gitbucket`. Взгляните на эту статью [Digital Ocean Article: Общие сведения о алгоритмах выбора серверов Nginx и блоков местоположения] (https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms) Seth 5 лет назад 0
Я имею. `gitbucket` (я создал) и` default` (поставляемый с nginx). Но вики оставляет неявным, мне нужно создать отдельный файл `sites-enabled` для работы с gitbucket. Vico 5 лет назад 0
Нет. Это пример, но вам не нужно иметь отдельный файл. Вы можете легко поместить блок местоположения в файл по умолчанию или наоборот. Вы не можете иметь два файла с одинаковыми директивами listen и name. Один всегда будет иметь приоритет. Seth 5 лет назад 1
Хорошо, добавление только части «location ...» фрагмента в «default» работает для меня. Vico 5 лет назад 0

1 ответ на вопрос

1
Seth

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

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

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

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

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

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

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

Да! Вот что я сделал: просто включил местоположение по умолчанию. Спасибо, что формализовали это! Vico 5 лет назад 1