socket fix
This commit is contained in:
parent
bd67125ee4
commit
a3c7bbed44
@ -60,6 +60,14 @@
|
|||||||
"allow_untrusted": false
|
"allow_untrusted": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"/socket.io": [
|
||||||
|
{
|
||||||
|
"url": "https://yobble-socket-service",
|
||||||
|
"role": "master",
|
||||||
|
"yobble_signed": true,
|
||||||
|
"allow_untrusted": false
|
||||||
|
}
|
||||||
|
],
|
||||||
"/test": [
|
"/test": [
|
||||||
{
|
{
|
||||||
"url": "https://localhost:9097",
|
"url": "https://localhost:9097",
|
||||||
|
|||||||
@ -62,6 +62,15 @@ func RemoveTrailingSlashMiddleware(next http.Handler) http.Handler {
|
|||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
urlPath := r.URL.Path
|
urlPath := r.URL.Path
|
||||||
|
|
||||||
|
// Skip redirect for Socket.IO and WebSocket upgrade traffic
|
||||||
|
// Socket.IO may rely on a trailing slash in polling endpoints.
|
||||||
|
if strings.HasPrefix(urlPath, "/socket.io") || strings.HasPrefix(urlPath, "/ws/socket.io") ||
|
||||||
|
strings.EqualFold(r.Header.Get("Upgrade"), "websocket") ||
|
||||||
|
strings.Contains(strings.ToLower(r.Header.Get("Connection")), "upgrade") {
|
||||||
|
next.ServeHTTP(w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if urlPath != "" && urlPath != "/" && strings.HasSuffix(urlPath, "/") {
|
if urlPath != "" && urlPath != "/" && strings.HasSuffix(urlPath, "/") {
|
||||||
newPath := strings.TrimSuffix(urlPath, "/")
|
newPath := strings.TrimSuffix(urlPath, "/")
|
||||||
newURL := *r.URL
|
newURL := *r.URL
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import (
|
|||||||
"net/http/httputil"
|
"net/http/httputil"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"yobble-gateway-go/internal/config"
|
"yobble-gateway-go/internal/config"
|
||||||
"yobble-gateway-go/internal/logger"
|
"yobble-gateway-go/internal/logger"
|
||||||
@ -58,7 +59,11 @@ func NewProxyHandler(cfg *config.Settings, geoIPService *geoip.GeoIPService) htt
|
|||||||
originalDirector(req) // Устанавливает базовые заголовки и URL
|
originalDirector(req) // Устанавливает базовые заголовки и URL
|
||||||
|
|
||||||
// Устанавливаем правильный путь для бэкенда
|
// Устанавливаем правильный путь для бэкенда
|
||||||
|
if strings.HasPrefix(r.URL.Path, "/socket.io") {
|
||||||
|
req.URL.Path = r.URL.Path
|
||||||
|
} else {
|
||||||
req.URL.Path = tailPath
|
req.URL.Path = tailPath
|
||||||
|
}
|
||||||
|
|
||||||
// Устанавливаем заголовки для информирования бэкенда об исходном запросе
|
// Устанавливаем заголовки для информирования бэкенда об исходном запросе
|
||||||
req.Header.Set("X-Real-IP", realIP)
|
req.Header.Set("X-Real-IP", realIP)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user