Nginx: mapowanie ruchu z portu na subdomenę

Stosunkowo często możemy spotkać się z sytuacją, w której aplikacja działająca przez sieć udostępnia w sobie wbudowany serwer WWW nadający na określonym porcie. Problem rozpoczyna się w sytuacji, gdy jest to nasza jedyna opcja, a mimo to chcielibyśmy mieć jakiś bardziej przyjazny adres w postaci np. subdomeny.

Dziś na szybko zademonstruję konfigurację hosta w serwerze nginx właśnie tak, aby przechwytywał on ruch występujący na określonym porcie - w tym wypadku na przykładzie Gitea (społecznościowego forku Gogs, lekkiego serwisu w stylu GitHub do samodzielnego hostowania). Wystarczy nam wiedzieć, że domyślnie jest on dostępny na porcie 3000, a naszym celem jest subdomena git (na potrzeby wpisu załóżmy że będzie to git.sobak.pl). W celu przekierowania ruchu wykorzystamy jedno z powszechnych zastosowań serwera nginx, znane jako reverse proxy.

server {
	listen 80;

	server_name git.sobak.pl;

	location / {
		proxy_pass http://localhost:3000;
	}
}

Tak, tylko tyle i aż tyle. W wypadku gdy korzystamy z HTTPS, zmieniamy drugą linijkę na listen 443, czyli odpowiedni dla tego rodzaju komunikacji port. Podany plik prawdopodobnie będziecie musieli zapisać w lokalizacji /etc/nginx/sites-available/git.sobak.pl i zsymlinkować z sites-enabled, czyli tak jak dla każdego innego hosta w nginxie. Pamiętajcie o zmianie przykładowych wartości subdomeny i portu - pamiętajcie że to rozwiązanie absolutnie nie ogranicza się do tej jednej aplikacji lecz stanowi ogólny schemat postępowania.


Powyższy wpis jest realizacją wymogów konkursu "Daj Się Poznać". Więcej o nim możecie przeczytać w tym wpisie. Po nowe materiały poświęcone tworzeniu projektu Codice, z którym startuję w konkursie, zapraszam w każdy wtorek. Ponadto więcej wpisów, poświęconych temu projektowi lub ogólnej tematyce bloga przeczytacie co sobotę. Miejmy nadzieję że publikacja dwóch wpisów w niedzielę jest tylko niewinnym wypadkiem przy pracy ;)