Есть сервер, работающий на удаленном хосте: some_port. Я могу подключиться к нему с моей Linux-машины, например telnet remotehost remoteport
. У меня есть приложение на Linux-машине, настроенное для подключения к 127.0.0.1:7576
где ожидается запуск сервера. Вместо этого я могу изменить конфигурацию для подключения к удаленному серверу, но есть ли способ прокси-сервера удаленного сервера, чтобы мне не пришлось изменять конфигурацию? Я могу привязать порт ssh (например, ssh -L...
) но удаленный сервер не поддерживает ssh. Есть ли простой способ, кроме создания процесса, который прослушивает локальный хост и пересылает пакеты на удаленный сервер?
Один из способов сделать это - запустить прокси локально, например nginx. В документация довольно хорош с соответствующими примерами.
Вот минимальный, но более полный пример:
worker_processes auto;
error_log error.log;
events { }
stream {
server {
listen 127.0.0.1:7576;
proxy_pass REMOTE_HOST:7576;
}
}
Ниже приведен пример запуска nginx на переднем плане с указанной выше конфигурацией в файле с именем: nginx.conf
.
nginx -p $PWD -c nginx.conf -g "daemon off; pid nginx.pid; error_log /dev/stderr;"
Параметр -g предоставляет глобальные конфигурации. daemon off
это тот, который заставляет его работать на переднем плане. pid nginx.pid
помещает файл pid в рабочий каталог, поскольку по умолчанию помещает его в каталог журналов, которого, вероятно, там нет. error_log /dev/stderr
отправлять журналы ошибок на консоль, я обнаружил, что это необходимо в -g
вариант при работе с daemon off
, в противном случае он может попытаться войти в расположение по умолчанию перед чтением конфигурации error_log из файла.