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