Публикация http-сервисов за NAT с помощью Fast Reverse Proxy
1. Установка Fast Reverse Proxy
Качаем дистрибутив с github:
https://github.com/fatedier/frp
Распаковываем себе в /home:
/home/<user>/frps
На сервер, и на каждый клиент.
На сервере нужны файлы frps
и frps.ini
на клинте, соответственно frpc
и frpc.ini
Правим конфиги. В качестве примера приведем внутренний веб-сервис, слушающий по http на 4040 порту.
2. Конфиг сервера
frps.ini
[common]
bind_port = 7000
subdomain_host=<your_domain_here>
vhost_http_port=7000
3. Конфиг клиента
frpc.ini
[common]
server_addr = <server IP or domain>
server_port = 7000
[service_name]
type = http
local_ip = localhost
local_port = 4040
subdomain = <subdomain prefix, e.g. mapnik>
4. Запускаем сервер, потом каждый из клиентов
Сервер:
./frps -c ./frps.ini
Клиент:
./frpc -c ./frpc.ini
5. Настраиваем reverse-proxy в nginx
Для домена <subdomain prefix>.<your_domain_here>
перенаправляем все на 7000 порт:
# proxy to localhost:7000
server {
listen 80;
server_name <subdomain prefix>.<your_domain_here> *.<subdomain prefix>.<your_domain_here>;
location / {
proxy_pass http://localhost:7000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
# Setup HTTPS certificates
listen 443;
server_name <subdomain prefix>.<your_domain_here>;
ssl_certificate /etc/letsencrypt/live/.<your_domain_here>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<your_domain_here>/privkey.pem;
# Proxy to localhost:7000
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header Host $http_host;
proxy_max_temp_file_size 0;
proxy_pass http://localhost:7000;
}
}
6. Проверяем
Все запросы на <subdomain prefix>.<your_domain_here>
будут перенаправляться nginx-ом на вешнем сервере на 7000 порт, который слушает FRP-server и в свою очередь перенаправляет на локальную машину, где слушает FRP-clinet и перенаправляет вашему внутреннему сервису на 4040-ой порт.
См. также
Создано: 12/01/2023 15:58, Изменено: 14/01/2023 22:34, Просмотров: 241
Назад