Odwrotne proxy gitbucket przez nginx

1

Obecnie próbuję zmusić nginx do pracy z gitbucket, korzystając z tego samouczka .

Chociaż jest to oficjalna wiki gitbucket, ta strona jest bardzo niekompletna i muszę dostosować niektóre szczegóły z przewodnika po apache , głównie przedrostek, aby gitbucket działał z nginx.

Więc mój wynik sites-available/gitbucketjest tutaj:

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;
    }
}

Po włączeniu gitbucketdziała, więc http://mydomain.xxx/gitbucketprzekierowuje do mojej instancji gitbucket, ale wtedy nginx przestaje wyświetlać dowolny plik indeksu, który na nim umieściłem /var/www/html, i zamiast tego wyświetla domyślną stronę indeksu dostarczoną, gdy świeżo go instalujemy. Po wyłączeniu gitbucket indeks z htmlfolderu jest ponownie wyświetlany.

Próbowałem zrobić bilet na repozytorium gitbucket, ale nie dostałem zadowalającej odpowiedzi. Więc czy ktoś może rzucić mi światło na ten problem?

Z góry dziękuję!

Vico
źródło
Upewnij się, że sites-enabledczytasz je we właściwej kolejności.
Seth
Przepraszam, nie rozumiem, co masz na myśli przez „prawidłowe zamówienie”. Jestem trochę nowicjuszem na nginx (zawsze używałem apache).
Vico,
Prawdopodobnie nadal masz więcej niż jeden plik do sites-enabledsprawdzenia zawartości tego pliku. Obecnie mówisz nginx, aby odpowiedział blokiem, który tylko definiuje /gitbucket. Przeczytaj artykuł
Seth
Mam. gitbucket(ive utworzony) i default(ten dostarczany z nginx). Ale wiki pozostawia niejawne, że muszę utworzyć oddzielny sites-enabledplik, aby poradzić sobie z gitbucket.
Vico,
1
Nie. To przykład, ale nie musisz mieć osobnego pliku. Możesz łatwo umieścić blok lokalizacji w domyślnym pliku lub odwrotnie. Nie możesz mieć dwóch plików z tą samą dyrektywą nasłuchiwania i nazwą serwera. Zawsze będzie miał pierwszeństwo.
Seth

Odpowiedzi:

1

Samouczek, który połączyłeś, daje bardzo konkretny przykład dla gitbucket.

Jeśli konfigurujesz witryny za pomocą nginx, musisz pamiętać, że każda witryna ma kilka ustawień i że istnieje logika, która określi, co ma pierwszeństwo. Artykuł o oceanach cyfrowych zatytułowany „Zrozumienie algorytmów wyboru serwera Nginx i bloków lokalizacji” o tym, jak to ustalono.

Z tego, co wyjaśniłeś w swoich komentarzach, otrzymałeś dwa pliki witryny. Jeden jest domyślnym plikiem, w którym ustawiasz swój zwykły katalog główny dla swojej witryny, a drugi dla gitbucket, który właśnie zawierał blok lokalizacji gitbucket i (co jest ważne) dyrektywę Listen i dyrektywę nazw serwerów.

Pierwszym krokiem nginx jest ustalenie, która witryna ma zostać dostarczona, aby dowiedzieć się, którego bloku serwera użyć. W tej chwili prawdopodobnie masz dwa bloki serwerów o tej samej definicji. Domyślny i blok gitbucket nasłuchują na porcie 80 dla tej samej nazwy serwera. Więc jedno zawsze będzie nadpisywać drugie.

Jeśli chcesz, aby oba działały, masz kilka opcji:

  • Ustaw dowolną witrynę na inny port za pomocą dyrektywy Listen.
  • Zmień nazwę serwera dla dowolnej witryny. Może to również obejmować subdomenę. Ilekroć to działa lub nie, może zależeć od konfiguracji DNS witryny.
  • Wystarczy dołączyć blok lokalizacji z konfiguracji gitbucket do pliku domyślnego.

Blok lokalizacji, jak sama nazwa wskazuje, po prostu określa ustawienia dla bardzo konkretnej lokalizacji. Tak naprawdę nie potrzebuje niezależnego bloku serwera, przynajmniej jeśli jest to tak podstawowa definicja.

Seth
źródło
1
Tak! Tak właśnie zrobiłem: po prostu domyślnie podałem lokalizację. Dzięki za sformalizowanie tego!
Vico,