Мне было интересно, если nginx может обрабатывать запросы http и https на одном и том же порту . [*]
Это то, что я пытаюсь сделать. Я использую веб-сервер (lighttpd), обрабатывающий запросы http, и программу на C, которая обслуживает определенный раздел дерева документов через https. Эти два процесса выполняются на одном сервере.
На уровне брандмауэра у меня может быть только один порт, перенаправляющий трафик на этот сервер . Итак, я хотел бы настроить nginx на этом сервере, чтобы он прослушивал запросы на один порт, а затем:
А) перенаправляет все запросы http://myhost.com/ *, чтобы они перешли на localhost: 8080 (где прослушивает lighttpd)
B) если пользователь запрашивает URL-адрес, начинающийся, например, с https: // myhost.com/app, он отправляет этот запрос на localhost: 8008 (программа C). Обратите внимание, что в этом случае трафик между удаленным браузером и nginx должен быть зашифрован.
Как вы думаете, это может быть возможно? Если это так, как это можно сделать?
Я знаю, как это сделать, используя два разных порта. Проблема, с которой я сталкиваюсь, заключается в том, чтобы сделать это только с одним портом (к сожалению, я не могу контролировать конфигурацию брандмауэра в этой конкретной среде, поэтому я не могу обойти это ограничение). Использование методов, таких как переадресация портов через ssh для обхода брандмауэра, также не будет работать, потому что это должно работать для удаленных пользователей, у которых нет ничего, кроме веб-браузера и интернет-ссылки.
Если это выходит за рамки возможностей nginx, знаете ли вы какой-либо другой продукт, который бы соответствовал этим требованиям? (до сих пор мне не удалось настроить это с помощью lighttpd и pound). Я также предпочел бы избегать Apache (хотя я готов использовать его, если это единственный возможный выбор).
Заранее спасибо Алекс
[*] Просто чтобы прояснить, я говорю об обработке зашифрованных и незашифрованных HTTP-соединений через один и тот же порт. Не имеет значения, выполняется ли шифрование через SSL или TLS.