Piszę kilka usług sieciowych zwracających dane JSON, które mają wielu użytkowników.
Jakie są zalety używania Nginx przed moim serwerem w porównaniu z samym używaniem serwera go http?
Piszę kilka usług sieciowych zwracających dane JSON, które mają wielu użytkowników.
Jakie są zalety używania Nginx przed moim serwerem w porównaniu z samym używaniem serwera go http?
Odpowiedzi:
To zależy.
Po wyjęciu z pudełka, umieszczenie nginx na początku jako odwrotnego proxy da ci:
Serwer Go HTTP jest bardzo dobre, ale będzie trzeba wyważać otwartych drzwi, aby zrobić niektóre z tych rzeczy (co jest w porządku: to nie miało być wszystkim dla wszystkich).
Zawsze łatwiej było umieścić nginx na pierwszym miejscu - w czym jest dobry - i pozwolić mu zająć się „serwerem sieciowym”. Moja aplikacja Go zajmuje się aplikacjami i tylko minimum nagłówków / itp. że to musi. Nie traktuj nginx na pierwszym miejscu jako „złej” rzeczy.
log
pakietu). Jeśli chcesz rejestrować adres IP, dostęp do zasobów itp., Musisz to napisać. To samo dotyczy ustawiania nagłówków, poza podstawami. Chociaż nie mam żadnych konkretnych danych, nginx przed Go naprawdę nie powinien być wolniejszy niż Go: w rzeczywistości może być szybszy dzięki gzipowi i własnym optymalizacjom. „Koszt” będzie oznaczał większe wykorzystanie pamięci / procesora, ale nginx jest również bardzo wydajny na tym froncie.
Standardowy serwer http Go jest w porządku. Jeśli twoja aplikacja to głównie / tylko "dynamiczne" żądania / odpowiedzi, to jest to naprawdę najlepszy sposób.
Możesz użyć nginx do obsługi statycznych zasobów, ale najprawdopodobniej standardowy Go też się do tego nadaje. Jeśli potrzebujesz większej wydajności, powinieneś po prostu użyć CDN lub pamięci podręcznej tak często, jak to możliwe z Varnish (na przykład).
Jeśli chcesz obsługiwać różne aplikacje z tego samego adresu IP, nginx jest dobrym wyborem dla serwera proxy do dystrybucji żądań między różnymi aplikacjami; chociaż częściej wyciągałem Varnish lub HAProxy z zestawu narzędzi do tego typu rzeczy.
Zestaw narzędzi internetowych Gorilla zapewnia:
schema
pakiet konwertuje wartości formularza na strukturę.Wypełnia to dużą lukę między net/http
serwerami Go i HTTP, takimi jak NGINX.
Osobiście unikałbym instalowania i konfigurowania innego serwera HTTP, net/http
jeśli wiem, że mogę zamiast tego podłączyć CDN.
Myślę, że net/http
ma najpotężniejszy serwer HTTP w każdej standardowej bibliotece.
Z https://blog.gopheracademy.com/caddy-a-look-inside/ wygląda na to, że Go może obsłużyć gzip, błędy, pliki statyczne, routing i nagłówki http przy użyciu oprogramowania pośredniego. Poniższy wiersz z bloga pokazuje, jak byś obsłużył taką prośbę.
logHandler(gzipHandler(fileServer))
W naprawdę ciekawy sposób radzą sobie z błędami logowania. Tak długo, jak oprogramowanie pośredniczące zwraca kod błędu (int), oprogramowanie pośredniczące do obsługi błędów obsługuje go automatycznie. Posunęli się nawet do skonfigurowania całej witryny w Go, tak jak zrobiłby to Nginx. „Plik nginx.conf dla wszystkich stron internetowych Akademii Gopher miał ponad 115 linii. Odpowiedni plik Caddyfile ma tylko 50 linii”.