Есть ли способ «разместить» существующую веб-службу на порту X в качестве сетевого пути к другой веб-службе на порту 80? - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь создать веб-сайт доступа к моим собственным службам, которые работают на моем linux сервере дома.

Службы, которые я использую, доступны через : . Например, есть экземпляр plex, который прослушивает порт X, а удаленная передача (торрент-клиент) прослушивает порт Y, а другая настраиваемая служба обработки - порт Z

Я создал простой веб-сайт, используя python flask, к которому я могу получить удаленный доступ, который перенаправляет пути к портам (так / plex превращается в : X), есть ли способ отобразить эти службы на назначенных мною сетевых путях, чтобы мне не нужно было открывать порты для каждой службы? Я хочу иметь возможность направить существующую службу: X на / plex без его модификации, я уверен, что это возможно.

Ответы [ 2 ]

2 голосов
/ 13 июля 2020

Мне немного сложно понять ваш вопрос.

Вы, конечно, можете использовать, например, nginx в качестве обратного прокси-сервера перед вашим веб-приложением, слушайте любые порт, а затем перенаправить его в вышестоящее приложение на любой порт - например, ваше приложение Flask.

Допустим, мой домен - example.com.

Затем я могу настроить, например, nginx для прослушивания порта 80 (и 443 для SSL), а затем проксировать все запросы, например, на порт 8000, где Flask выполняется локально.

1 голос
/ 29 июля 2020

Да, это вызывается с использованием nginx в качестве обратного прокси. Это хорошо задокументировано в inte rnet и даже в официальных документах . Ваш nginx.conf будет иметь что-то вроде:

location /my/flask/app/ {
    # Assuming your flask app is at localhost:8000
    proxy_pass http://localhost:8000;
}

С точки зрения пользователя, они будут подключаться к your.nginx.server.com/my/flask/app/. Но за кулисами nginx фактически перенаправит запрос в ваше приложение и вернет свой ответ пользователю.

Вы можете развернуть nginx как контейнер Docker, я рекомендую сделать это, поскольку локальные файлы и конфигурации будут храниться отдельно от вашей работы, и вам будет проще возиться с ними по мере обучения. Имейте в виду, что nginx - это только HTTP. Вы не можете использовать его для проксирования таких вещей, как S SH или произвольных протоколов (во всяком случае, без особых хлопот). Если службы генерируют свои собственные URL-адреса, вам также может потребоваться настроить их так, чтобы они ожидали перенаправления nginx.

BTW, обычно flask не обслуживается напрямую для rnet, а вместо этого nginx разговаривает с чем-то вроде Gunicorn для решения различных проблем, связанных с сетью: https://vsupalov.com/what-is-gunicorn/

...