Reverse proxing gitbucket über nginx

353
Vico

Ich versuche gerade, Nginx mit gitbucket mit diesem Tutorial arbeiten zu lassen .

Obwohl dies das offizielle gitbucket-Wiki ist, ist diese Seite sehr unvollständig, und ich muss einige Details aus dem Guide für Apache anpassen, hauptsächlich die Präfix-Sache, damit gitbucket mit nginx funktioniert.

Mein Ergebnis sites-available/gitbucketist also hier:

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

Wenn ich es aktiviere gitbucket, funktioniert es, also wird http://mydomain.xxx/gitbucketauf meine gitbucket-Instanz umgeleitet, aber dann stoppt nginx alle Indexdateien, die ich auf meine gesetzt habe /var/www/html, und stattdessen die standardmäßige Indexseite, die bei der Neuinstallation bereitgestellt wird. Wenn Sie gitbucket deaktivieren, wird der Index aus dem htmlOrdner erneut bereitgestellt .

Ich habe versucht, ein Ticket für gitbucket repo zu erstellen, erhielt aber keine zufriedenstellende Antwort. Kann mir jemand dieses Problem näher bringen?

Danke im Voraus!

1
Stellen Sie sicher, dass Ihre "sites-enabled" in der richtigen Reihenfolge gelesen werden. Seth vor 5 Jahren 0
Sorry, ich habe nicht verstanden, was Sie mit "richtiger Reihenfolge" meinen. Ich bin ein bisschen Neuling auf Nginx (immer Apache verwendet). Vico vor 5 Jahren 0
Wahrscheinlich haben Sie immer noch mehr als eine Datei in "sites-enabled", um den Inhalt dieser Datei zu überprüfen. Momentan sagen Sie Nginx, dass er mit einem Block antworten soll, der nur `/ gitbucket` definiert. Schauen Sie sich das an [Digitaler Ozean-Artikel: Nginx-Server und Positionsblockauswahlalgorithmen verstehen] (https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms). Seth vor 5 Jahren 0
Ich habe. `gitbucket` (ive erstellt) und` default` (der mit nginx gelieferte). Aber das Wiki hinterlässt implizit, dass ich eine separate "sites-enabled" -Datei erstellen muss, um mit gitbucket fertig zu werden. Vico vor 5 Jahren 0
Es ist ein Beispiel, aber Sie brauchen keine separate Datei. Sie können den Standortblock leicht in Ihre Standarddatei einfügen oder umgekehrt. Sie können nicht zwei Dateien mit der gleichen Anweisung für das Überwachen und den Servernamen haben. Man wird immer Vorrang haben. Seth vor 5 Jahren 1
Ok, das Hinzufügen von "location ..." Teil des Snippets auf "default" hat für mich funktioniert. Vico vor 5 Jahren 0

1 Antwort auf die Frage

1
Seth

Das von Ihnen verlinkte Tutorial gibt ein sehr spezifisches Beispiel für Gitbucket.

Wenn Sie Sites mit nginx einrichten, müssen Sie berücksichtigen, dass jede Site eine Reihe von Einstellungen hat und dass es eine Logik gibt, die bestimmt, was wann Vorrang hat. Dieser digitale Artikel mit dem Titel "Verständnis von Nginx Server- und Standortblockauswahlalgorithmen" beschreibt, wie dies bestimmt wird.

Von dem, was Sie in Ihren Kommentaren erklärten, haben Sie zwei Site-Dateien erhalten. Dies ist die Standarddatei, in der Sie Ihr reguläres Stammverzeichnis für Ihre Site festgelegt haben, und eine für gitbucket, die gerade den gitbucket-Standortblock enthielt, und (das ist wichtig) eine Listen-Direktive und eine Servernamen-Direktive.

Der erste Schritt, den nginx benötigt, um herauszufinden, welche Site geliefert werden soll, ist der Serverblock, der verwendet werden soll. Derzeit haben Sie wahrscheinlich zwei Serverblöcke mit derselben Definition. Ihr Standard- und Gitbucket-Block überwachen Port 80 für denselben Servernamen. So wird einer immer den anderen überschreiben.

Wenn beides funktionieren soll, haben Sie einige Möglichkeiten:

  • Stellen Sie eine der beiden Sites mithilfe der Listenanweisung auf einen anderen Port ein.
  • Ändern Sie den Servernamen für beide Standorte. Dies könnte auch eine Subdomain beinhalten. Wann immer dies funktioniert oder nicht, hängt möglicherweise von der DNS-Konfiguration der Site ab.
  • Fügen Sie einfach den Standortblock aus Ihrer Gitbucket-Konfiguration in Ihre Standarddatei ein.

Ein Standortblock definiert, wie der Name schon sagt, nur die Einstellungen für einen bestimmten Ort. Es ist nicht wirklich ein unabhängiger Serverblock erforderlich, zumindest nicht, wenn es eine solche grundlegende Definition ist.

Ja! Das ist was ich getan habe: Einfach den Ort in der Standardeinstellung enthalten. Danke für das formalisieren! Vico vor 5 Jahren 1