Proxy - Добавление AutoHTTPS
Включает Автоматическая перенаправление на HTTPS на proxy
This commit is contained in:
@@ -35,8 +35,17 @@ func StartHandlerProxy(w http.ResponseWriter, r *http.Request) (valid bool) {
|
||||
|
||||
valid = true
|
||||
|
||||
// Логирование прокси-запроса
|
||||
// Проверяем AutoHTTPS - редирект с HTTP на HTTPS
|
||||
https_check := !(r.TLS == nil)
|
||||
if !https_check && proxyConfig.AutoHTTPS {
|
||||
// Перенаправляем на HTTPS
|
||||
httpsURL := "https://" + r.Host + r.URL.RequestURI()
|
||||
http.Redirect(w, r, httpsURL, http.StatusMovedPermanently)
|
||||
tools.Logs_file(0, "P-HTTP", "🔀 IP клиента: "+r.RemoteAddr+" Редирект HTTP → HTTPS: "+r.Host+r.URL.Path, "logs_http.log", false)
|
||||
return valid
|
||||
}
|
||||
|
||||
// Логирование прокси-запроса
|
||||
if https_check {
|
||||
tools.Logs_file(0, "P-HTTPS", "🔍 IP клиента: "+r.RemoteAddr+" Обработка запроса: https://"+r.Host+r.URL.Path+" → "+proxyConfig.LocalAddress+":"+proxyConfig.LocalPort, "logs_https.log", false)
|
||||
} else {
|
||||
@@ -45,7 +54,7 @@ func StartHandlerProxy(w http.ResponseWriter, r *http.Request) (valid bool) {
|
||||
|
||||
// Определяем протокол для локального соединения
|
||||
protocol := "http"
|
||||
if proxyConfig.UseHTTPS {
|
||||
if proxyConfig.ServiceHTTPSuse {
|
||||
protocol = "https"
|
||||
}
|
||||
|
||||
@@ -85,7 +94,7 @@ func StartHandlerProxy(w http.ResponseWriter, r *http.Request) (valid bool) {
|
||||
}
|
||||
|
||||
// Для HTTPS соединений настраиваем TLS (если понадобится)
|
||||
if proxyConfig.UseHTTPS {
|
||||
if proxyConfig.ServiceHTTPSuse {
|
||||
client.Transport = &http.Transport{
|
||||
TLSClientConfig: &tls.Config{
|
||||
InsecureSkipVerify: true, // Простая настройка для внутренних соединений
|
||||
|
@@ -37,7 +37,8 @@ type Proxy_Service struct {
|
||||
ExternalDomain string `json:"ExternalDomain"`
|
||||
LocalAddress string `json:"LocalAddress"`
|
||||
LocalPort string `json:"LocalPort"`
|
||||
UseHTTPS bool `json:"UseHTTPS"`
|
||||
ServiceHTTPSuse bool `json:"ServiceHTTPSuse"`
|
||||
AutoHTTPS bool `json:"AutoHTTPS"`
|
||||
}
|
||||
|
||||
func LoadConfig() {
|
||||
|
27
README.md
27
README.md
@@ -88,7 +88,8 @@ go build -o MyApp.exe
|
||||
"ExternalDomain": "git.example.ru",
|
||||
"LocalAddress": "127.0.0.1",
|
||||
"LocalPort": "3333",
|
||||
"UseHTTPS": false
|
||||
"ServiceHTTPSuse": false,
|
||||
"AutoHTTPS": true
|
||||
}
|
||||
],
|
||||
"Soft_Settings": {
|
||||
@@ -113,7 +114,8 @@ go build -o MyApp.exe
|
||||
- `ExternalDomain` - внешний домен для перехвата запросов
|
||||
- `LocalAddress` - локальный адрес сервиса
|
||||
- `LocalPort` - порт локального сервиса
|
||||
- `UseHTTPS` - использовать HTTPS для локального подключения (true/false)
|
||||
- `ServiceHTTPSuse` - использовать HTTPS для подключения к локальному сервису (true/false)
|
||||
- `AutoHTTPS` - автоматически перенаправлять HTTP → HTTPS (true/false)
|
||||
|
||||
**Пример множественных прокси:**
|
||||
```json
|
||||
@@ -123,18 +125,35 @@ go build -o MyApp.exe
|
||||
"ExternalDomain": "git.example.com",
|
||||
"LocalAddress": "127.0.0.1",
|
||||
"LocalPort": "3000",
|
||||
"UseHTTPS": false
|
||||
"ServiceHTTPSuse": false,
|
||||
"AutoHTTPS": true
|
||||
},
|
||||
{
|
||||
"Enable": false,
|
||||
"ExternalDomain": "api.example.com",
|
||||
"LocalAddress": "127.0.0.1",
|
||||
"LocalPort": "8080",
|
||||
"UseHTTPS": false
|
||||
"ServiceHTTPSuse": false,
|
||||
"AutoHTTPS": false
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
#### 📖 Подробное описание параметров:
|
||||
|
||||
**`ServiceHTTPSuse`** - протокол подключения к локальному сервису:
|
||||
- `false` - vServer подключается к локальному сервису по HTTP (по умолчанию)
|
||||
- `true` - vServer подключается к локальному сервису по HTTPS
|
||||
|
||||
**`AutoHTTPS`** - автоматический редирект на HTTPS:
|
||||
- `true` - все HTTP запросы автоматически перенаправляются на HTTPS (рекомендуется)
|
||||
- `false` - разрешены как HTTP, так и HTTPS запросы
|
||||
|
||||
**Схема работы:**
|
||||
```
|
||||
Клиент (HTTP/HTTPS) → vServer (проверка AutoHTTPS) → Локальный сервис (ServiceHTTPSuse)
|
||||
```
|
||||
|
||||
**Применение изменений:**
|
||||
- Введите команду `config_reload` в консоли для перезагрузки конфигурации
|
||||
- Изменения применятся к новым запросам без перезапуска сервера
|
||||
|
@@ -16,7 +16,8 @@
|
||||
"ExternalDomain": "git.example.ru",
|
||||
"LocalAddress": "127.0.0.1",
|
||||
"LocalPort": "3333",
|
||||
"UseHTTPS": false
|
||||
"ServiceHTTPSuse": false,
|
||||
"AutoHTTPS": true
|
||||
}
|
||||
],
|
||||
|
||||
|
Reference in New Issue
Block a user