Гид по технологиям

AWStats по HTTPS: SSL, cron и оптимизация

6 min read Серверы Обновлено 16 Sep 2025
AWStats по HTTPS: SSL, cron и оптимизация
AWStats по HTTPS: SSL, cron и оптимизация

К чему это приведёт

Этот материал пошагово объясняет, как создать самоподписанный SSL‑сертификат на сервере с Apache, подключить AWStats для работы по HTTPS, автоматизировать обновления отчётов через cron и снизить накладные расходы на преобразование IP→имён/страны (GeoIP). Подходит для системных администраторов и инженеров DevOps.


1. Подготовка: требования и краткая методология

  • Требуется установленный Apache и OpenSSL на сервере. На CentOS/RHEL пакет называется mod_ssl.
  • Краткая методология:
    1. Сгенерировать приватный ключ и CSR (запрос на подпись сертификата).
    2. Подписать сертификат (самоподписанный или CA/Let’s Encrypt).
    3. Скопировать сертификат и ключ в стандартные каталоги и выставить права.
    4. Настроить Apache для использования SSL (порт 443).
    5. Перенаправить доступ к AWStats на HTTPS и настроить cron для обновлений.

Важно: если сервер открыт в интернет, рассмотрите выпуск сертификата через доверенный CA (например, Let’s Encrypt) вместо самоподписанного.

2. Создание SSL‑сертификата

OpenSSL должен быть установлен — на CentOS/RHEL это делается так:

yum install mod_ssl

Создание RSA-приватного ключа (пример из исходника использует 1024 бит—рекомендуется 2048 или выше):

# openssl genrsa -des3 -out server.key 1024

Вводится pass phrase для защиты приватного ключа:

Generating RSA private key, 1024 bit long modulus  
Enter pass phrase for server.key:  
Verifying - Enter pass phrase for server.key:

Просмотр информации о ключе:

# openssl rsa -noout -text -in server.key

Создание запроса на подпись (CSR) с использованием приватного ключа:

# openssl req -new -key server.key -out server.csr

Во время создания CSR вам будут заданы поля DN (Distinguished Name). Можно оставлять поля пустыми, установив ‘.’

Пример ввода полей:

Country Name (2 letter code) [GB]:JO  
State or Province Name (full name) [Berkshire]:State  
Locality Name (eg, city) [Newbury]: Your Location  
Organization Name (eg, company) [My Company Ltd]:My Company  
Organizational Unit Name (eg, section) []:  
Common Name (eg, your name or your server's hostname) []:ns.somewhere.com  
Email Address []: [email protected]

Подписание CSR и создание самоподписанного сертификата на 365 дней:

# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Пример подтверждения:

Signature ok
subject=/C=JO/ST=State/L=Your Location/O=My Company/CN=ns.somewhere.com/emailAddress=[email protected] Getting Private key

Копирование файлов в стандартные каталоги Apache и установка прав:

# cp server.crt /etc/pki/tls/certs/  
# cp server.key /etc/pki/tls/private/  
# cp server.csr /etc/pki/tls/private
# chmod go-rwx /etc/pki/tls/certs/server.crt  
# chmod go-rwx /etc/pki/tls/private/server.key  
# chmod go-rwx /etc/pki/tls/private/server.csr

Примечание по безопасности: используйте ключи минимум 2048 бит (openssl genrsa -out server.key 2048) и храните приватный ключ в защищённом каталоге; регулярная ротация сертификатов уменьшает риск компрометации.

3. Настройка Apache для SSL

Добавьте в конфигурацию Apache (например, httpd.conf на CentOS) строки, указывающие на сертификат и ключ:

SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

Перезапустите или перезагрузите Apache, затем убедитесь, что сервер слушает порт 443:

netstat -aunt

Ожидаемый вывод (фрагмент):

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN  
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN  
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN

После этого откройте сайт через https://ваш-домен/ и примите самоподписанный сертификат в браузере (или установите доверенный сертификат от CA, чтобы избежать предупреждений).

4. Перенаправление AWStats на HTTPS

В .htaccess можно добавить правило редиректа (отредактируйте URL под вашу инсталляцию):

# redirect awstats to https
RewriteCond %{REQUEST_URI} ^/awstats(.*)
RewriteRule ^/rawe/awstats(.*)$ https://example.com/awstats$1 [R,L]

В конфигурационном файле awstats.site.conf есть параметр UseHTTPSLinkForUrl — укажите там корень HTTPS‑ссылок, если необходимо:

UseHTTPSLinkForUrl
Version : 4.0+
   
# When AWStats build HTML links in its report pages, it starts thoose link
# with "http://". However some links might be HTTPS links, so you can enter
# here the root of all your HTTPS links. If all your site is a SSL web site,
# just enter "/".
# This parameter is not used if ShowLinksOnUrl is 0.
# Example: "/shopping"
# Example: "/"
# Default: ""
#
UseHTTPSLinkForUrl=""

Установите UseHTTPSLinkForUrl=”/“ если весь сайт доступен только по HTTPS.

5. Автоматическое обновление AWStats с помощью cron

Чтобы не обновлять отчёты вручную, создайте cron‑задачу. Рекомендуемый график — ежедневно в время, когда нагрузка минимальна.

Откройте crontab:

$ crontab -e

Добавьте задачу, обновляющую AWStats ежедневно в 09:45 (локальное время сервера):

45 9 * * * /usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl"

Объяснение: этот cron вызовет скрипт обновления для всех конфигов в указанной директории. Убедитесь, что путь к awstats_updateall.pl и awstats.pl соответствует вашей установке.

Не забудьте оставить пустую строку в конце crontab перед сохранением.

Вместо множества задач можно использовать один вызов awstats_updateall.pl (пример из исходника):

15 4 * * * perl $HOME/awstats/tools/awstats_updateall.pl now -awstatsprog=$HOME/awstats/cgi-bin/awstats.pl -configdir=$HOME/awstats/cgi-bin/

Если awstats.pl вызывается из cron, выставьте корректные права на исполняемый файл:

$ chmod 504 awstats/cgi-bin/awstats.pl

Это позволит cron и владельцу выполнять скрипт.

Пример через logrotate

Можно использовать logrotate, чтобы обновлять AWStats при ротации логов Apache. Пример файла в /etc/logrotate.d/awstats:

/var/log/httpd/*log {
missingok
notifempty
sharedscripts
prerotate
/var/www/awstats/awstats.pl-update -config=somesite.net
postrotate
/etc/init.d/httpd reload > /dev/null 2>&1 || true
endscript
}

6. Cron для множества конфигураций

Если у вас много конфигов AWStats, не добавляйте под каждый отдельную cron‑задачу. Используйте awstats_updateall.pl, который последовательно обновит все найденные конфиги в указанной папке.

Проверьте, что:

  • awstats_updateall.pl доступен и имеет корректный shebang (perl).
  • У пользователя, от имени которого работает cron, есть права читать конфиг‑файлы и запускать awstats.pl.

7. Настройка дополнений: GeoIP и производительность

По умолчанию разрешение имён и геолокация делаются через DNS и запись dns.txt, что при высоком трафике даёт overhead. Альтернатива — использование GeoIP (MaxMind GeoIP/GeoLite) для маппинга IP→страна/город локально.

Рекомендации:

  • Используйте GeoIP модуль и локальные базы для быстрого сопоставления; обновляйте базы регулярно.
  • Отключите обратные DNS‑поиски внутри AWStats, если вам не нужны имена хостов — это снизит нагрузку.
  • Включайте только те ExtraSections и плагины, которые действительно нужны.

Ссылку на качественную статью о GeoIP для AWStats можно найти в документации AWStats и на сайте разработчика GeoIP/MaxMind.

8. Альтернативные подходы и когда они применимы

  • Let’s Encrypt: если ваш сервер публичен и вы хотите убрать предупреждения браузера — используйте certbot для автоматического получения и продления бесплатного CA‑сертификата.
  • Reverse proxy (nginx/Cloudflare): терминальный SSL можно вынести на прокси, при этом внутреннее соединение может оставаться HTTP (но если важна защита внутри сети — используйте HTTPS на backend тоже).
  • В средах с высокой безопасностью храните приватный ключ на аппаратном модуле (HSM) или используйте PKI решения.

9. Контроль качества и критерии приёмки

Критерии приёмки установки:

  • Сертификат корректно загружен, Apache перезапускается без ошибок.
  • Сайт и AWStats доступны по https://ваш-домен/awstats без ошибок сервера.
  • Cron‑задачи выполняются и обновляют отчёты (проверить timestamps в /var/www/awstats/ или логах).
  • Права на приватный ключ ограничены (только root/администратор).
  • При использовании GeoIP сопоставления корректно отображаются страны/регионы.

10. Роль‑ориентованные чек‑листы

Для системного администратора:

  • Установлен mod_ssl и OpenSSL.
  • Созданы и защищены server.key, server.crt.
  • Конфигурация Apache обновлена и перезапущена.
  • Проверен netstat на порт 443.
  • Настроен cron и проверено его выполнение.

Для DevOps/инженера безопасности:

  • Рассмотрен выпуск через Let’s Encrypt или корпоративный CA.
  • Оценены шифры и протоколы TLS (отключены устаревшие SSLv3/TLS1.0).
  • Проведён аудит прав на файлы и ротация ключей.

Для вебмастера/аналитика:

  • Убедился, что AWStats генерирует ссылку на HTTPS (UseHTTPSLinkForUrl).
  • Проверил корректность отчётов после перехода на HTTPS.

11. Безопасность и приватность

  • Защитите приватный ключ паролем и правами доступа.
  • Отключите слабые шифры и старые версии TLS в конфигурации Apache.
  • Если логирование включает персональные данные, проверьте требования локального законодательства по хранению таких данных (GDPR/локальные законы).

12. Краткий глоссарий

  • SSL/TLS — протоколы для шифрования трафика между клиентом и сервером.
  • CSR — Certificate Signing Request, запрос на подпись сертификата.
  • AWStats — инструмент веб‑аналитики на основе логов сервера.
  • GeoIP — локальные базы для сопоставления IP с географией.

Итог и рекомендации

  • Для публичных сайтов используйте Let’s Encrypt вместо самоподписанных сертификатов, чтобы убрать предупреждения в браузерах.
  • Автоматизируйте обновления AWStats через awstats_updateall.pl и/или logrotate, чтобы поддерживать отчёты актуальными и снижать ручной труд.
  • Оцените необходимость обратных DNS‑запросов и GeoIP: локальные базы обычно быстрее и снижают нагрузку.

Вопросы по конкретной конфигурации (версии ОС, пути установки AWStats, требования безопасности) ускорят помощь — приложите выводы команд apachectl -M, netstat и содержимое /etc/httpd/conf.d/ssl.conf при обращении за поддержкой.

Краткая сводка:

  • Создайте SSL и привяжите его к Apache.
  • Перенаправьте AWStats на HTTPS и настройте UseHTTPSLinkForUrl.
  • Автоматизируйте обновления через cron или logrotate.
  • Используйте GeoIP и отключайте лишние поиски для повышения производительности.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Устранение неполадок Windows 10 Storage Spaces
Хранение данных

Устранение неполадок Windows 10 Storage Spaces

USB‑флешка как память для Xbox 360
Xbox

USB‑флешка как память для Xbox 360

Spotify Wrapped 2023 — найти и поделиться
Музыка

Spotify Wrapped 2023 — найти и поделиться

Установка Git на Windows
Разработка

Установка Git на Windows

Udio — создавайте треки по 30 секунд
AI музыка

Udio — создавайте треки по 30 секунд

Как включить или отключить чувствительный контент в X
соцсети

Как включить или отключить чувствительный контент в X