Мені було цікаво, чи вміє nginx обробляти http та https-запити на одному порті . [*]
Це те, що я намагаюся зробити. Я запускаю веб-сервер (lighttpd), що обробляє http-запити, і програму C, яка обслуговує певний розділ дерева документів через https. Ці два процеси працюють на одному сервері.
На рівні брандмауера я можу мати лише один порт, який перенаправляє трафік на цей сервер . Отже, що я хотів би зробити, це встановити nginx на цьому сервері, щоб він слухав запити на одному порту, а потім:
A) переспрямовує всі запити http://myhost.com/ *, щоб вони перейшли до localhost: 8080 (де прослуховується lighttpd)
Б) якщо користувач запитує URL, починаючи, наприклад, з https: // myhost.com/app, він надсилає цей запит до localhost: 8008 (програма C). Зауважте, що в цьому випадку трафік між віддаленим браузером та nginx повинен бути зашифрований.
Як ви вважаєте, це могло бути можливим? Якщо це так, як це можна зробити?
Я знаю, як це зробити за допомогою двох різних портів. Проблема, з якою я стикаюсь, виконує це лише за допомогою одного порту (на жаль, у мене немає контролю над конфігурацією брандмауера в даному конкретному середовищі, тому це обмеження, яке я не можу уникнути). Використання таких методів, як зворотне просування порту через ssh для обходу брандмауера, також не працюватиме, оскільки це має працювати для віддалених користувачів, які не мають нічого іншого, ніж веб-браузер та Інтернет-посилання.
Якщо це більше можливостей nginx, чи знаєте ви про будь-який інший продукт, який міг би відповідати цим вимогам? (поки що я невдало налаштовував це з lighttpd та фунтом). Я також вважаю за краще уникати Apache (хоча я готовий використовувати його, якщо це єдиний можливий вибір).
Заздалегідь дякую, Алекс
[*] Щоб зрозуміти, я говорю про обробку зашифрованих та незашифрованих HTTP-з'єднань через один і той же порт. Не має значення, чи шифрування здійснюється через SSL або TLS.