Настройка сервера за AegisX
Что поменять на вашем сервере после подключения, чтобы сайт видел настоящих посетителей, а платежи и интеграции работали без перебоев.
Для любого сайта
IP посетителя
AegisX передаёт его в заголовках X-Real-IP и X-Forwarded-For. Без настройки ниже сервер видит в логах адреса AegisX, а не посетителей.
HTTPS
Посетители всегда приходят по HTTPS. Если сервер подключён по http://, AegisX добавляет заголовок X-Forwarded-Proto: https, по нему сайт понимает, что соединение защищено. Надёжнее подключить сервер по https://.
Закрыть сервер
Пока сервер отвечает всем, атаковать можно в обход защиты. Скрипт для nftables, iptables или ufw есть в кабинете: Сайты → сайт → Защита сервера. Он сам обновляет список адресов AegisX.
Сертификат AegisX
На той же вкладке есть корневой сертификат AegisX. С ним сервер принимает HTTPS-подключения только от AegisX и только для своего сайта.
Адреса AegisX всегда доступны по ссылке: my.aegisx.network/api/public/edge-ips
Адреса меняются, когда мы добавляем серверы. Обновляйте файл раз в день, например через cron.
nginx
Настоящий IP посетителя в $remote_addr, логах и приложении. Модуль realip обычно уже есть в nginx.
curl -fsS https://my.aegisx.network/api/public/edge-ips | sed 's/.*/set_real_ip_from &;/' > /tmp/aegisx-realip.conf \
&& echo 'real_ip_header X-Real-IP;' >> /tmp/aegisx-realip.conf \
&& sudo mv /tmp/aegisx-realip.conf /etc/nginx/conf.d/aegisx-realip.conf \
&& sudo nginx -t && sudo systemctl reload nginxПринимать только подключения AegisX к этому сайту (в блоке server с listen 443):
ssl_client_certificate /etc/nginx/aegisx-origin-pull-ca.pem;
ssl_verify_client on;
if ($ssl_client_s_dn !~ "CN=example.com(,|$)") { return 403; }Apache
Модуль remoteip подставляет настоящий IP посетителя. В формате логов используйте %a вместо %h.
sudo a2enmod remoteip
{ echo 'RemoteIPHeader X-Real-IP'; curl -fsS https://my.aegisx.network/api/public/edge-ips | sed 's/^/RemoteIPTrustedProxy /'; } > /tmp/aegisx-remoteip.conf \
&& sudo mv /tmp/aegisx-remoteip.conf /etc/apache2/conf-available/aegisx-remoteip.conf \
&& sudo a2enconf aegisx-remoteip && sudo apachectl configtest && sudo systemctl reload apache2Принимать только подключения AegisX к этому сайту (в VirtualHost на 443 порту):
SSLCACertificateFile /etc/ssl/aegisx-origin-pull-ca.pem
SSLVerifyClient require
SSLVerifyDepth 1
<If "%{SSL_CLIENT_S_DN_CN} != 'example.com'">
Require all denied
</If>WordPress
Настоящий IP
Настройте nginx или Apache, как выше. Плагинам безопасности и комментариям ничего менять не нужно.
HTTPS без петли редиректов
Если сервер подключён по http://, добавьте строки ниже в wp-config.php перед строкой «That’s all, stop editing».
WP-Cron и проверка состояния
WordPress обращается к своему же сайту с вашего сервера. Добавьте адрес сервера в разрешённые: Правила → Доступ по IP.
Оплаты WooCommerce
Stripe, LiqPay и YooKassa включаются готовыми исключениями на вкладке «Боты». Для других платёжных модулей добавьте их путь уведомлений, обычно /wc-api/.
Вход и xmlrpc.php
Для /wp-login.php задайте отдельный лимит, например 5 POST-запросов в минуту: сайт → Настройки → «Правила путей». Если не пользуетесь приложением WordPress и Jetpack, закройте /xmlrpc.php: Правила → Фильтры путей.
REST API
/wp-json/ выносите из проверки браузера, только если к нему обращаются внешние приложения.
wp-config.php
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}1С-Битрикс
Настоящий IP
В BitrixVM перед Apache стоит nginx: настройте его, как выше. Apache получит адрес от nginx.
HTTPS
Если сервер подключён по http://, добавьте строки ниже в /bitrix/php_interface/dbconn.php.
Оплаты
Платёжные системы присылают уведомления на /bitrix/tools/sale_ps_result.php. Добавьте этот путь в исключения на вкладке «Боты».
Обмен с 1С
1С подключается к /bitrix/admin/1c_exchange.php. Добавьте адрес компьютера или сервера с 1С в разрешённые: Правила → Доступ по IP.
Административный раздел
Если закрываете /bitrix/admin/ по адресам, не забудьте про адрес 1С: обмен идёт через этот же раздел.
/bitrix/php_interface/dbconn.php
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}Laravel
Доверенные прокси
Laravel берёт IP посетителя и HTTPS из заголовков только от доверенных прокси. Укажите адреса AegisX, как ниже.
Вебхуки
Маршруты для вебхуков (например /webhooks/) добавьте в исключения на вкладке «Боты»: платёжные системы и сервисы не проходят проверку браузера.
API для приложений
Путь /api/ тоже вынесите из проверки браузера, а лимиты и проверку токенов настройте на вкладке «API».
Laravel 11 и новее, bootstrap/app.php:
->withMiddleware(function (Middleware $middleware) {
$middleware->trustProxies(at: [
'203.0.113.10',
'198.51.100.20',
]);
})Laravel 10, app/Http/Middleware/TrustProxies.php:
protected $proxies = [
'203.0.113.10',
'198.51.100.20',
];Если сервер закрыт скриптом для всех, кроме AegisX, вместо списка можно указать '*': тогда его не нужно обновлять.
Как проверить
- Откройте сайт и найдите свой запрос в логе сервера: там должен быть ваш адрес, а не адрес AegisX.
- В кабинете на вкладке «Защита сервера» запустите проверку: она покажет, не виден ли адрес сервера в открытых записях.
- Попробуйте открыть сайт напрямую по адресу сервера: после скрипта подключение не должно устанавливаться.
Не нашли свою платформу?
Напишите, на чём работает сайт, и мы подскажем настройки.