Proxy-setup
Настройка прокси-сервера
Иногда может быть желательно иметь обратный прокси-сервер перед экземпляром Cfx.re сервера. В этом руководстве будут обсуждаться требования к такой установке.
Процесс подключения
Процесс подключения клиент-> сервер выглядит следующим образом:
- Клиент разрешает конечную точку подключения из взаимодействия присоединения. Это может быть любой из следующих вариантов:
- Поле в выводе списка серверов.
connectEndPoints
- Адрес сервера, кэшированный подсистемой URL-адресов присоединения.
- Необработанный IP-адрес, узел или URL-адрес, введенный в команде.
connect
- Поле в выводе списка серверов.
- Клиент извлекает общие метаданные сервера через a на конечной точке подключения.
GET /info.json
- Клиент пытается выполнить запрос к конечной точке подключения .
initConnectPOST /client
- Если сервер принимает клиента, он отправит клиенту маркер подключения.
- Клиентские запросы на конечную точку подключения, получающие одну или несколько комбинаций IP/порт. Если указано несколько, он выберет один из них для использования в качестве конечной точки сервера.
getEndpoints
- Клиентские запросы на конечной точке сервера. Это приведет к одному или нескольким запросам либо к конечной точке сервера, либо к переопределению файлового сервера.
getConfigurationGET /files/*
- Клиент отправляет запрос сведений UDP на конечную точку сервера.
- Клиент отправляет запрос на подключение к ENet, а также рукопожатие UDP на конечную точку сервера. Если принято, клиент теперь имеет одноранговый узел ENet.
- Клиент начинает загрузку игры.
- Клиент потенциально открывает дополнительные каналы TCP/UDP боковой полосы для конечной точки сервера, потенциально используя другие протоколы через мультиплекс.
Типы прокси
Существует два различных типа обратных прокси, которые имеют смысл в этой системе, и один из них может быть настроен независимо от другого.
Одним из них является конечная точка подключения, которая может быть заменена любым обычным обратным прокси-сервером HTTPS / балансировщиком нагрузки на порту, ведущим к фактическому TCP-порту сервера. Другой — конечная точка сервера, которой требуется необработанный прокси-сервер TCP/UDP на соответствующих портах, ведущий к фактическому порту TCP/UDP сервера.443
Подключение прокси-сервера
Для прокси-сервера подключения может работать следующая настройка (на основе руководства сообщества):
- Cloudflare настраивается с доменом, которым вы владеете, добавляя запись, скажем, в качестве прокси-записи A/CNAME на машину, которой вы управляете.
server1.example.com
- nginx, установленный на машине, контролируемой пользователем (которая не обязательно должна быть основным сервером: это может быть бюджетный VPS под управлением Linux даже для сервера Windows), имеющий запись хоста для , как показано ниже:
server1.example.com
upstream backend { # use the actual server IP here, or if separate, a proxy server server 100.64.1.2:30120; } # assuming this path exists proxy_cache_path /srv/cache levels=1:2 keys_zone=assets:48m max_size=20g inactive=2h; server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name server1.example.com; # this can also be a Cloudflare origin certificate if you're using CF ssl_certificate /path/to/certificate.pem; ssl_certificate_key /path/to/privkey.pem; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; # required to pass auth headers correctly proxy_pass_request_headers on; # required to not make deferrals close the connection instantly proxy_http_version 1.1; proxy_pass http://backend; } # extra block for a caching proxy location /files/ { proxy_pass http://backend$request_uri; add_header X-Cache-Status $upstream_cache_status; proxy_cache_lock on; proxy_cache assets; proxy_cache_valid 1y; proxy_cache_key $request_uri$is_args$args; proxy_cache_revalidate on; proxy_cache_min_uses 1; } }
- Следующие значения в конфигурации сервера:
# prevents the server list from advertising your server using its actual IP set sv_forceIndirectListing true # makes the server list backend request `https://server1.example.com/` instead of the default set sv_listingHostOverride "server1.example.com" # a space-separated list of IPv4 networks in CIDR notation to allow 'X-Real-IP' # from, as well as bypass the rate limiter set sv_proxyIPRanges "100.64.1.1/32" # the actual endpoint your server is hosted on, or one # or multiple server endpoint proxies as noted below set sv_endpoints "100.64.1.2:30120" # some guides also mention `sv_listingIpOverride`, this value is only needed if the server list backend # can't guess the IP to query itself, and is not provided to any front-end connection. # # this is usually the case for systems with multiple IPs, or if the server is firewalled off for all hosts except # a server proxy.
- Если вы хотите настроить прокси-сервер кэширования, также будет полезно следующее:
# obfuscates files with a global key, instead of a per-client key set adhesive_cdnKey "yourSecret" # adds a file server for 'all' resources fileserver_add ".*" "https://server1.example.com/files"
Рабочая настройка этого примера будет иметь следующие URL-адреса, правильно доступные в браузере:
- https://server1.example.com/info.json
- https://server1.example.com/players.json
- https://server1.example.com/dynamic.json
- https://server1.example.com/client (должно показывать '/client is ONLY POST')
Обратите внимание, что в настоящее время использование команды должно использовать или URL-адрес присоединения, он не будет пытаться найти голый домен в качестве URL-адреса.connectconnect "https://server1.example.com/"
Прокси сервера
Если вы также хотите проксировать необработанные конечные точки TCP/UDP, модуль Nginx 'stream' можно использовать следующим образом (это недопустимо в типичном файле, оно должно быть непосредственно в a или ):sites-enabledconf.dnginx.conf
stream {
upstream backend {
server 100.64.1.2:30120;
}
server {
listen 30120;
proxy_pass backend;
}
server {
listen 30120 udp reuseport;
proxy_pass backend;
}
}
При настройке этого параметра также выполните соответствующую настройку.sv_endpoints
Расширенные настройки
Эта настройка также может иметь несколько вариантов:
- Можно добавить подсистему балансировки нагрузки в кластер Kubernetes в качестве правильного входящего трафика.
- Если указан правильный блок (например, регулярное выражение), домен может быть совместно использован, скажем, с веб-сайтом.
location
- Реализация пользовательского обработчика для запросов initConnect и делегирование успешного подключения к фактической последовательности внутреннего сервера. Это может быть использовано для выбора сервера или некоторых других творческих вещей.
/clientinitConnect