Руководство по настройке услуги обратного прокси FRP в ServBay
FRP — это инструмент обратного прокси с высокой производительностью, который реализует проход внутренней сети через архитектуру клиент-сервер. Это руководство поможет пользователям ServBay настроить клиент frpc для создания безопасного туннеля и обеспечить публикацию локальных услуг в интернете.
Технический принцип
FRP создает зашифрованный туннель связи между сервером (frps) и клиентом (frpc), позволяя отображать внутренние сетевые услуги на общедоступный сервер. Этот подход поддерживает множество протоколов, включая TCP/UDP/HTTP/HTTPS, что делает его применимым для сценариев удаленной отладки, тестирования API и т.д. в среде разработки ServBay.
Подготовка окружения
1. Установка клиента FRP
Следуйте приведенным ниже шагам для развертывания клиента frpc:
- Перейдите на страницу выпусков GitHub и загрузите соответствующую версию.
- Распакуйте и разместите в системной PATH (например, для архитектуры macOS ARM):bash
tar -zxvf frp_0.61.1_darwin_arm64.tar.gz sudo cp frp_0.61.1_darwin_arm64/frpc /usr/local/bin/
1
2 - Проверьте установку:bash
frpc -v # frpc version 0.61.1
1
2
Практическая конфигурация туннеля
Описание конфигурационного файла
Создайте конфигурационный файл frpc.toml
с основной структурой, как указано ниже:
serverAddr = your-frps-server.com
serverPort = 7000
auth.method = token
auth.token = your_authentication_token
[[proxies]]
name = "test_web"
type = "http"
localPort = 80
customDomains = servbay.your-domain.com
2
3
4
5
6
7
8
9
10
Параметр | Описание функции |
---|---|
serverAddr | Общедоступный адрес сервера FRP |
serverPort | Порт для связи с сервером FRP (по умолчанию 7000) |
auth.method | Метод аутентификации сервера |
auth.token | Ключ аутентификации сервера |
type | Тип прокси (http/https/tcp и др.) |
localPort | Порт локального сервиса |
customDomains | Домен для доступа извне |
Пример типичной конфигурации
Отображение локального HTTPS сервиса ServBay на общедоступный адрес:
В примере:
- адрес сервера frp —
frps.servbay.demo
- домен, настроенный для локального ServBay, —
servbay.test
- домен, предоставляющий услуги в интернете —
test-frp.servbay.app
(домен должен быть правильно настроен в DNS для адреса сервера frp)
serverAddr = frps.servbay.demo
serverPort = 7000
auth.method = "token"
auth.token = servbay
[[proxies]]
name = "servbay-frpc-demo"
type = "https"
customDomains = ["test-frp.servbay.app"]
[proxies.plugin]
type = "https2https"
localAddr = "127.0.0.1:443"
crtPath = "/Applications/ServBay/ssl/private/tls-certs/servbay.test/servbay.test.crt"
keyPath = "/Applications/ServBay/ssl/private/tls-certs/servbay.test/servbay.test.key"
hostHeaderRewrite = "servbay.test"
requestHeaders.set.x-from-where = "frp"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Запуск службы:
frpc -c frpc.toml
Проверка услуг
- Откройте браузер и перейдите по адресу:
https://test-frp.servbay.app
1 - Проверьте индикаторы верификации:
- Возвращаемый статус HTTP 200
- Содержимое ответа совпадает с локальной службой
- Проверка действительности SSL-сертификата
Диагностика логов
frpc -c frpc.toml --log_level debug # Включение отладочного лога
tail -f /var/log/frpc.log # Мониторинг логов в реальном времени
2
Руководство по устранению неполадок
Явление | Решение |
---|---|
Ошибка аутентификации | Проверьте, что конфигурация auth.token совпадает с тем, что на сервере |
Проблемы с разрешением домена | Убедитесь, что DNS правильно разрешает IP-адрес сервера FRP |
Конфликт портов | Используйте lsof -i :PORT , чтобы проверить, занят ли порт |
Частые отключения туннеля | Измените параметрыHeartbeat: heartbeat_timeout = 30 |
Преимущества решения
Решение FRP предоставляет пользователям ServBay следующие ключевые преимущества:
- Поддержка множества протоколов для сложных бизнес-сценариев
- Горячее обновление конфигурации без перезапуска сервиса
- Поддержка многоуровневого прохода внутренней сети с помощью родного каскадного прокси
- Открытая архитектура обеспечивает безопасность и контролируемость данных
Рекомендуется включить TLS-шифрование при развертывании в производственной среде и принудительно настроить шифрование трафика с помощью tls_enable = true
.