Этот проект представляет собой простой реверс-прокси сервер, написанный на Go. Сервер перенаправляет входящие HTTP/HTTPS запросы на заданный целевой домен. Он также включает функции для логгирования и статистики. Имеет возможность автоматического обновления SSL-сертификатов через Let's Encrypt.
- Перенаправление запросов на целевой домен.
- Возможность включения/выключения HTTPS.
- Отображение статистики в реальном времени (RPS, Latency, CPU и RAM usage).
- Поддержка HTTP и HTTPS.
- Перенаправление всех видов HTTP методов, заголовков и тела запроса.
- Автоматическое обновление SSL-сертификатов с помощью Let's Encrypt.
- Вынесение конфигурационных параметров в переменные окружения.
- Автономная работа без использования Nginx или Apache.
- Работа как системный сервис с автоматическим перезапуском при сбоях.
- Реализации на Go
- Go 1.16 или выше.
- Библиотека
gopsutil
для сбора статистики по CPU и памяти.
Склонируйте репозиторий:
git clone git@github.com:pecherskiy-v/micro-proxy-go.git
Перейдите в директорию проекта:
cd micro-proxy-go
Запустите сервер:
go run main.go
TARGET_DOMAIN
- целевой домен для перенаправления (например,example.com
).LISTEN_PORT
- порт, на котором будет запущен сервер (например,8888
).LOGGING_FLAG
- включение логгирования (on
илиoff
).CERT_PATH
иKEY_PATH
- пути к сертификату и ключу для HTTPS.
--stat
- включение статистики.--https
- установка режима HTTPS (on
илиoff
).
TARGET_DOMAIN=example.com LISTEN_PORT=8888 go run main.go --stat
Этот bash-скрипт предназначен для автоматической настройки и запуска простого прокси-сервера. Скрипт выполняет следующие задачи:
- Установка необходимых зависимостей (
certbot
,golang
) - Парсинг конфигурационного файла
config.ini
- Задание параметров через интерактивные вопросы (если не в тихом режиме)
- Обновление файла
config.ini
с новыми параметрами - Получение SSL-сертификата через Certbot (опционально)
- Компиляция Go-скрипта
- Создание и запуск службы для
systemd
,openrc
или просто запуск на macOS
Скачайте скрипт и дайте ему права на выполнение:
chmod +x run.sh
Запустите скрипт:
./run.sh
-s
: Запуск скрипта в тихом режиме, без интерактивных вопросов.
./run.sh -s
- Ubuntu
- Alpine
- macOS
config.ini
содержит следующие параметры:
YOUR_DOMAIN
: Ваш доменTARGET_DOMAIN
: Целевой доменLISTEN_PORT
: Порт для прослушиванияCERT_PATH
: Путь к сертификатуKEY_PATH
: Путь к приватному ключу
- Certbot
- Golang
Для Ubuntu создаем proxy.service
:
Для Alpine создаем файл proxy
в /etc/init.d/
:
генерируем сертификат и указываем к нему путь
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
MIT