zastanawiałem się, czy nginx jest w stanie obsłużyć żądania HTTP i https na tym samym porcie . [*]
To właśnie próbuję zrobić. Korzystam z serwera WWW (lighttpd) obsługującego żądania HTTP oraz programu C obsługującego określoną sekcję drzewa dokumentów za pośrednictwem protokołu https. Te dwa procesy działają na tym samym serwerze.
Na poziomie zapory mogę mieć tylko jeden port przekierowujący ruch na ten serwer . Chciałbym więc skonfigurować nginx na tym serwerze, aby nasłuchiwał żądań na jednym porcie, a następnie:
A) przekierowuje wszystkie żądania http://myhost.com/ *, aby trafiły do localhost: 8080 (gdzie nasłuchuje lighttpd)
B) jeśli użytkownik zażąda adresu URL zaczynającego się na przykład od https: // myhost.com/app, wysyła to żądanie do localhost: 8008 (program w języku C). Pamiętaj, że w takim przypadku ruch między zdalną przeglądarką a nginx musi być szyfrowany.
Czy uważasz, że to może być możliwe? Jeśli tak, to jak to zrobić?
Wiem, jak to zrobić, używając dwóch różnych portów. Wyzwaniem, przed którym stoję, jest zrobienie tego za pomocą tylko jednego portu (niestety nie mam kontroli nad konfiguracją zapory ogniowej w tym konkretnym środowisku, więc jest to ograniczenie, którego nie mogę uniknąć). Korzystanie z technik takich jak odwrotny port do przodu przez ssh w celu ominięcia zapory również nie będzie działać, ponieważ powinno to działać dla zdalnych użytkowników, którzy nie mają nic więcej niż przeglądarkę internetową i łącze internetowe.
Jeśli wykracza to poza możliwości Nginx, czy znasz jakiś inny produkt, który spełniałby te wymagania? (jak dotąd nie udało mi się skonfigurować tego z lighttpd i funtem). Wolałbym także unikać Apache (chociaż jestem gotów go użyć, jeśli jest to jedyny możliwy wybór).
Z góry dzięki, Alex
[*] Żeby było jasne, mówię o obsłudze zaszyfrowanych i nieszyfrowanych połączeń HTTP przez ten sam port. Nie ma znaczenia, czy szyfrowanie odbywa się za pośrednictwem protokołu SSL lub TLS.