Опубликовано: 17 апреля 2022 г. 20:40 | Автор: echodiv | Категория: Администрирование | 👁 512

Перенаправление трафика через Nginx и SSH

Предположим нам понадобилось обрабатывать трафик из интернета на локальном компьютере, при этом у нас нет публичного IP, но есть выделенный сервер, где крутится наш сайт-визитка. Причин для того, чтобы забрать трафик на локальную машину, может быть много. Возможно одного ядра и 512 мегабайт оперативной памяти на нашем сервере не хватает для необходимых нам операций или мы хостим "ботов", которые используют веб-хуки на локальном компьютере. Либо у нас есть IoT сервер, который таким образом будет общаться с внешним миром.

На нашем выделенном сервере мы должны использовать Nginx для удобства. Но не обязательно. В данной статье будет описан сценарий, когда у нас Nginx

1. Прописываем в конфиг следующий блок

server {
    server_name ;
    listen 80;
    location /proxy_to_local {
        proxy_set_header X-Forwarded-For $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:3001;
    }
}

2. Теперь нам нужно настроить подключение локальной машины к серверу через SSH. Добавляем наш публичный ключ в authorized_keys.

3. Запускаем SSH клиента на локальной машине слудеющей командой:

localhost $ ssh -vnNT -R 3001:127.0.0.1:3002 <hosting>
debug1: Remote connections from LOCALHOST:3001 forwarded to local address 127.0.0.1:3002
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: filesystem full

Теперь мы забираем трафик с 3001 порта сервера на 3002 порт локальной машины и можем делать с ним всё что нам нужно.