Buduję serwer proxy dla wewnętrznego interfejsu API, aby umożliwić klientom łączenie się bez konieczności instalowania certyfikatów z podpisem własnym.
Klienci (zbudowani, będący własnością i używani tylko wewnętrznie) będą łączyć się za pośrednictwem protokołu SSL z pudełkiem nginx, gdzie używam XSendfile do sprawdzania poświadczeń na poziomie aplikacji (aplikacja railsowa ). Jeśli poświadczenia są prawidłowe, połączenie jest przekazywane z powrotem do nginx, gdzie używa proxy_pass do wysłania połączenia do serwera nadrzędnego.
Teraz działa to świetnie w przypadku standardowych połączeń HTTP, ale próbuję wymyślić, jak dodać nasze certyfikaty do miksu.
To pytanie jest prawie identyczne z tym , ale zawiera niezręczne wymagania dotyczące certyfikatów.
Czy jest to w ogóle możliwe w przypadku Nginx? Czy jest lepsze rozwiązanie?
Rozliczę również http od klienta -> nginx i samopodpisany certyfikat od nginx do API.
źródło
proxy_ssl_server_name on;
było wszystkim, czego potrzebowałem, aby działało to, gdy pośredniczę w ruchu do hosta w Google App Engine za pomocą wbudowanego zarządzanego przez Google protokołu SSL! (To nie jest samopodpisany certyfikat ani nic, więc potrzebował tylko jednej linii). Dzięki za świetną radę.Myślę, że prawdopodobnie chcesz czegoś takiego (oczywiście uproszczonego w tym przykładzie):
Jedyną rzeczą, którą możesz zmienić, byłoby wyraźne określenie „hosta” - jeśli na przykład nazwa hosta proxy nie była taka sama, jak nazwa hosta używana na serwerze proxy nginx.
źródło
Dla każdego, kto spotka się z tym w przyszłości, ostatecznie nie użyłem do tego nginx.
Zamiast tego użyłem stunnela w „trybie klienta”. Bardzo łatwy w konfiguracji i robi dokładnie to, czego potrzebuję.
źródło