
Apache по умолчанию использует порт 80 для HTTP и 443 для HTTPS. При работе на локальной машине или в сетевой инфраструктуре с ограниченными портами может потребоваться переназначение этих значений. Для изменения порта необходимо редактировать файлы конфигурации httpd.conf или apache2.conf, а также убедиться, что новый порт не занят другими процессами.
Перед внесением изменений рекомендуется определить свободные порты с помощью команды netstat -tuln или ss -tuln на Linux. Это позволяет избежать конфликтов с другими службами и предотвратить ошибки запуска Apache. Новый порт указывается директивой Listen, которая принимает как конкретный номер порта, так и IP-адрес для привязки.
После изменения порта важно проверить конфигурацию командой apachectl configtest или apache2ctl configtest. Любые синтаксические ошибки или занятый порт приведут к отказу сервера от запуска. Также необходимо настроить брандмауэр и маршрутизацию, чтобы пакеты на новом порту проходили к серверу без блокировки.
Эта статья подробно рассматривает все шаги перенастройки порта Apache, включая изменение конфигурационных файлов, настройку виртуальных хостов и проверку доступности сервера на новом порту. Следование инструкциям позволит избежать сбоев и обеспечить стабильную работу веб-сервера.
Проверка текущего порта Apache и доступных в системе

Чтобы определить порт, на котором работает Apache, необходимо проверить директиву Listen в файлах httpd.conf или apache2.conf. Строка вида Listen 80 указывает, что сервер принимает подключения на порт 80 для всех доступных интерфейсов. Если присутствуют несколько директив Listen, Apache будет одновременно отслеживать все указанные порты.
Для проверки активных портов на сервере используйте команду netstat -tuln | grep apache2 или ss -tuln | grep 80 на Linux. Это позволяет увидеть, какие порты уже заняты процессами Apache и избежать конфликтов при переназначении порта. На Windows подходит netstat -ano | findstr :80 с последующей сверкой PID в диспетчере задач.
Важно учитывать, что виртуальные хосты могут использовать отдельные порты, указанные в их конфигурации через директиву VirtualHost. Чтобы проверить все порты, используемые виртуальными хостами, выполните поиск строк <VirtualHost *:порт> в каталоге /etc/apache2/sites-enabled/ или conf.d/ на Linux. На Windows аналогично проверяются файлы sites-available.
После выявления текущих портов можно оценить доступность других номеров. Используйте команду lsof -i :номер_порта или netstat -an для проверки, занят ли порт другой службой. Только свободный порт можно безопасно назначить Apache без риска отказа запуска или конфликта с другими процессами.
Изменение порта в файле httpd.conf и apache2.conf
Для смены порта Apache необходимо напрямую редактировать конфигурационные файлы. В Linux это чаще всего /etc/apache2/apache2.conf или /etc/apache2/ports.conf, в Windows – C:\Apache24\conf\httpd.conf. Основная директива для изменения порта – Listen.
- Откройте конфигурационный файл с правами администратора или root. На Linux: sudo nano /etc/apache2/ports.conf, на Windows: откройте httpd.conf в блокноте с правами администратора.
- Найдите строку с директивой Listen. Например, Listen 80 указывает на порт 80.
- Измените номер порта на желаемый, например Listen 8080 для HTTP или Listen 8443 для HTTPS.
- Если используются виртуальные хосты, измените порт в блоках <VirtualHost *:80> на соответствующий новый порт, например <VirtualHost *:8080>.
- Сохраните файл и закройте редактор.
- Проверьте синтаксис конфигурации командой apachectl configtest на Linux или httpd.exe -t на Windows. Ошибки блокируют запуск сервера.
- После проверки выполните перезапуск Apache, чтобы изменения вступили в силу: sudo systemctl restart apache2 на Linux или перезапустите службу Apache через Панель управления на Windows.
При смене порта важно учитывать, что большинство браузеров по умолчанию используют порт 80 для HTTP и 443 для HTTPS. Если выбран нестандартный порт, его необходимо указывать в URL, например http://localhost:8080.
Настройка виртуальных хостов для нового порта
После изменения основного порта Apache необходимо обновить конфигурацию виртуальных хостов, чтобы сервер корректно обрабатывал запросы на новом порту. Файлы виртуальных хостов находятся в /etc/apache2/sites-available/ и /etc/apache2/sites-enabled/ на Linux или в conf/extra/httpd-vhosts.conf на Windows.
Для переназначения порта выполните следующие действия:
- Откройте файл виртуального хоста с правами администратора.
- Найдите строку с директивой <VirtualHost *:порт>. Например, <VirtualHost *:80>.
- Измените номер порта на новый, например <VirtualHost *:8080>.
- Если виртуальный хост использует SSL, измените также директиву SSLEngine on и порт в <VirtualHost *:443> на соответствующий новый HTTPS-порт, например 8443.
- Сохраните изменения и выполните проверку синтаксиса командой apachectl configtest на Linux или httpd.exe -t на Windows.
- Активируйте изменённый виртуальный хост (если необходимо) с помощью a2ensite имя_файла на Linux.
- Перезапустите Apache для применения изменений: sudo systemctl restart apache2 на Linux или через Панель управления службами на Windows.
После настройки нового порта убедитесь, что DNS или локальный hosts-файл указывает на корректный адрес и порт, если виртуальный хост обслуживает несколько доменов. В URL необходимо указывать новый порт, например http://example.local:8080, чтобы тестировать доступность сайта.
Открытие порта в брандмауэре и проверка сетевого доступа
После изменения порта Apache необходимо убедиться, что брандмауэр разрешает входящие соединения на новый номер. В Linux с использованием ufw откройте порт командой sudo ufw allow 8080/tcp для HTTP или 8443/tcp для HTTPS. В CentOS и RHEL с firewalld используйте sudo firewall-cmd —add-port=8080/tcp —permanent и sudo firewall-cmd —reload.
На Windows откройте Панель управления → Брандмауэр Windows → Дополнительные параметры, создайте правило для входящих соединений и укажите номер порта и протокол TCP. Это гарантирует, что системные фильтры не блокируют подключение к Apache.
Для проверки сетевого доступа используйте команду telnet IP_сервера 8080 или nc -zv IP_сервера 8080 на Linux. Если соединение устанавливается, порт открыт и сервер доступен. Также можно проверить доступность через браузер, указав новый порт в URL, например http://localhost:8080.
Если доступ не устанавливается, проверьте локальные правила iptables, внешние маршрутизаторы и антивирусное программное обеспечение. Только после успешного прохождения теста можно считать порт полностью доступным для клиентов и внешних сетей.
Перезапуск Apache для применения изменений порта

После внесения изменений в директиву Listen и настройки виртуальных хостов необходимо перезапустить Apache, чтобы сервер начал использовать новый порт. В Linux с systemd выполните команду sudo systemctl restart apache2 или sudo systemctl restart httpd в зависимости от дистрибутива. Это завершает все текущие процессы Apache и запускает их с новой конфигурацией.
Для проверки успешного перезапуска используйте sudo systemctl status apache2 или sudo systemctl status httpd. Статус должен показывать active (running) без ошибок. Любые сообщения об ошибках, связанные с портом, указывают на конфликт с другой службой или синтаксические ошибки в конфигурации.
На Windows перезапуск выполняется через Панель управления → Службы → Apache HTTP Server → Перезапустить службу или через командную строку с правами администратора: httpd -k restart. После перезапуска важно проверить доступность сервера через новый порт, используя браузер или команду telnet localhost новый_порт.
Если Apache не запускается на новом порту, рекомендуется временно вернуть старый порт и тщательно проверить конфигурационные файлы на наличие ошибок в директивах Listen и VirtualHost, а также убедиться, что порт свободен в системе и разрешен в брандмауэре.
Диагностика ошибок при смене порта и логирование

При смене порта Apache могут возникнуть ошибки, связанные с конфликтом портов, синтаксисом конфигурации или блокировкой брандмауэром. Основной инструмент диагностики – проверка логов и тест конфигурации.
Для предварительной проверки синтаксиса используйте команду apachectl configtest или httpd.exe -t на Windows. Ошибки будут указаны с точным файлом и строкой, где проблема обнаружена.
Логи ошибок Apache по умолчанию находятся в:
| Система | Файл логов |
|---|---|
| Linux (Debian/Ubuntu) | /var/log/apache2/error.log |
| Linux (CentOS/RHEL) | /var/log/httpd/error_log |
| Windows | C:\Apache24\logs\error.log |
В логах можно увидеть сообщения о занятом порте (Address already in use), неправильной директиве Listen или конфликтах виртуальных хостов. Для оперативной диагностики используйте команды:
- netstat -tuln | grep порт – проверка, какой процесс использует порт.
- lsof -i :порт – определение PID процесса, блокирующего порт.
- tail -f /var/log/apache2/error.log – просмотр ошибок в реальном времени.
После устранения ошибок обязательно перезапустите сервер и проверьте доступность нового порта через браузер или telnet. Правильная диагностика и логирование позволяют быстро выявлять причины отказа Apache и предотвращать повторные сбои при смене портов.
Вопрос-ответ:
Как узнать, какой порт использует Apache на моем сервере?
Для проверки текущего порта необходимо открыть конфигурационный файл httpd.conf или apache2.conf и найти директиву Listen. Она указывает номер порта, на котором сервер принимает подключения. Дополнительно можно использовать команду netstat -tuln или ss -tuln на Linux, чтобы увидеть, какие порты заняты процессами Apache. На Windows применяют netstat -ano | findstr :80 с последующей проверкой PID в диспетчере задач.
Что нужно изменить в конфигурации Apache, если я хочу использовать нестандартный порт, например 8080?
Необходимо изменить директиву Listen в файле конфигурации, указав новый порт, например Listen 8080. Если сервер использует виртуальные хосты, следует изменить порт в блоках <VirtualHost *:80> на <VirtualHost *:8080>. После изменения конфигурации нужно проверить синтаксис командой apachectl configtest на Linux или httpd.exe -t на Windows и выполнить перезапуск сервера.
Как убедиться, что новый порт не блокируется брандмауэром?
На Linux с ufw используют команду sudo ufw allow 8080/tcp для открытия порта. На системах с firewalld применяется sudo firewall-cmd —add-port=8080/tcp —permanent и sudo firewall-cmd —reload. На Windows создают правило для входящих соединений через Брандмауэр Windows, указав порт и протокол TCP. После настройки можно проверить доступ с помощью telnet IP_сервера 8080 или через браузер http://localhost:8080.
Почему Apache не запускается после смены порта и как найти причину?
Наиболее частая причина — конфликт порта с другой службой или ошибка в конфигурации. Сначала выполните apachectl configtest или httpd.exe -t, чтобы проверить синтаксис. Если порт занят, используйте lsof -i :порт на Linux или netstat -ano | findstr :порт на Windows для определения процесса. Логи ошибок Apache находятся в /var/log/apache2/error.log на Debian/Ubuntu, /var/log/httpd/error_log на CentOS/RHEL и C:\Apache24\logs\error.log на Windows, там отображаются причины отказа запуска.
Нужно ли указывать новый порт в URL для доступа к сайту?
Да, если используется нестандартный порт, отличный от 80 для HTTP или 443 для HTTPS, его необходимо указывать в адресе. Например, после смены порта на 8080 адрес будет http://localhost:8080. Для сайтов с SSL и нестандартным портом HTTPS, например 8443, URL будет https://localhost:8443. Это позволяет браузеру корректно направлять запросы на измененный порт Apache.
