pecherskiy-v / micro-proxy-go

Универсальный HTTP/HTTPS Прокси

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Простой HTTP/HTTPS Reverse Proxy на Go

Описание

Этот проект представляет собой простой реверс-прокси сервер, написанный на 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

Описание run.sh

Этот 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/:

Для локального запуска с поддержкой https

генерируем сертификат и указываем к нему путь

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

Лицензия

MIT

About

Универсальный HTTP/HTTPS Прокси


Languages

Language:Shell 50.6%Language:Go 49.4%