Что такое порт технически
Порт — номер, определяющий, к какой именно службе на сервере обращается запрос. Один физический сервер может одновременно обслуживать десятки разных служб, и порт указывает, какую из них нужно вызвать: обычный веб-сайт, почтовый сервер, служебную панель управления.
https://site.ru:443/catalog/
└┬─┘
номер порта
Порт присутствует в каждом запросе всегда, даже когда его не видно — просто для двух стандартных значений браузер скрывает его по умолчанию, о чём подробно говорится в общем разборе структуры адреса в статье про из чего состоит URL.
Стандартные порты для веб-протоколов
| Протокол | Стандартный порт | Видим ли в адресной строке |
|---|---|---|
| http | 80 | Нет, браузер скрывает |
| https | 443 | Нет, браузер скрывает |
| Нестандартный порт | Любое другое число | Да, показывается явно |
Если сайт работает на порту 80 для http или 443 для https, адрес выглядит чисто — https://site.ru/ — без всякого упоминания номера. Это не значит, что порта нет, просто он подразумевается по умолчанию для данного протокола.
Когда номер порта становится видимым
Порт появляется в адресной строке, если сайт настроен на нестандартном значении — обычно это признак тестового или локального окружения, а не боевого сайта.
http://localhost:3000/ локальная разработка
http://192.168.1.10:8080/ тестовый сервер во внутренней сети
https://site.ru:8443/ нестандартный https-порт
Причины использовать нестандартный порт: несколько версий сайта на одном сервере во время разработки, ограничения хостинга, служебные административные панели, вынесенные на отдельный порт для дополнительной защиты от случайного обнаружения.
Порт в адресе — почти всегда сигнал проблемы для рабочего сайта. Если посетитель или поисковый робот видит в адресной строке номер порта у публичного коммерческого сайта, это означает, что либо сайт всё ещё работает в тестовом режиме, либо настройка сервера сделана неаккуратно и стандартный порт не используется там, где должен.
Проблемы для индексации и SEO
- Разные адреса — разные страницы. Для поисковой системы
site.ruиsite.ru:8080— формально разные адреса, что создаёт риск дублей, если сайт случайно доступен по обоим одновременно. - Нечитаемость и недоверие. Посетитель, увидевший непонятный номер порта в адресе, может воспринять сайт как непрофессиональный или подозрительный.
- Ссылки, скопированные с тестового окружения. Если внутренние ссылки на сайте случайно ведут на адрес с портом разработки, они окажутся нерабочими на боевом сервере.
Как проверить, что порт нигде не просочился
- Откройте главную страницу сайта и посмотрите на адресную строку — порта быть не должно.
- Проверьте несколько внутренних страниц на разных уровнях вложенности.
- Найдите в исходном коде сайта абсолютные ссылки, содержащие двоеточие с числом после домена, — это может указывать на забытые адреса тестового окружения.
- Проверьте карту сайта и канонические адреса на отсутствие номера порта.
Как убрать порт из адреса на своём сервере
Если сайт по какой-то причине настроен на нестандартном порту, но должен быть доступен как обычный сайт, задача решается настройкой веб-сервера — Apache или nginx перенаправляют входящие запросы со стандартного порта 80 или 443 на внутренний порт, на котором реально работает приложение, оставляя для внешнего мира привычный чистый адрес без номера.
Чек-лист
- На боевом сайте адрес не должен содержать видимый номер порта.
- Проверить внутренние ссылки на отсутствие адресов тестового окружения с портом разработки.
- Убедиться, что сайт не доступен одновременно по стандартному адресу и по адресу с портом — это создаёт дубли.
- Если сервис работает на нестандартном порту, настроить проксирование или перенаправление, чтобы внешний адрес оставался чистым.
Обратный прокси как типичное решение
Самый распространённый способ спрятать нестандартный порт приложения — поставить перед ним обратный прокси-сервер, слушающий стандартный порт 80 или 443 и перенаправляющий запросы внутрь, на реальный порт приложения, невидимый снаружи. Так устроено подавляющее большинство современных сайтов: видимый порт и порт, на котором фактически работает код, — разные вещи, и посетителю никогда не нужно знать о втором.
Посетитель → 443 (видимый) → proxy → 3000 (реальный, скрытый)
Это же решение снимает и вопрос смешения нескольких сайтов на одном сервере — каждый сайт получает свой домен, а прокси сам определяет, на какой внутренний порт направить конкретный запрос, без каких-либо следов этой маршрутизации в адресной строке.
Порт и защищённое соединение
Стоит отдельно упомянуть путаницу, которая иногда возникает между портом 443 и самим наличием шифрования: порт 443 — это лишь традиционное соглашение, к которому привязан протокол https, а не гарантия того, что соединение защищено. Реальную защищённость обеспечивает сертификат и правильная настройка протокола, а не сам номер порта — теоретически https можно настроить и на любом другом порту, просто это потребует явно указывать его в адресе, что неудобно для посетителей и обычно избегается на боевых сайтах.
Частые вопросы
Почему в адресе обычного сайта не видно номера порта?
Потому что для стандартных портов — 80 для http и 443 для https — браузер скрывает номер по умолчанию. Порт всё равно присутствует в запросе технически, просто не отображается, поскольку подразумевается автоматически.
Что означает, если в адресе сайта видно двоеточие с числом?
Обычно это признак нестандартного порта — сайт работает не на привычном 80 или 443, а на другом значении. Для тестовых и локальных окружений это нормально, для рабочего публичного сайта — почти всегда сигнал проблемы настройки.
Может ли адрес с портом создать дубль страницы?
Да, если сайт случайно доступен одновременно и по стандартному адресу, и по адресу с явным портом — для поисковой системы это два разных URL с одинаковым содержимым.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.