2014-01-07 2 views
0

Представьте, что есть хостинг, содержащий:Как на самом деле сервер порты работают

  • поисковик, работающий на порту 5678 (это требуется этот порт он открыт для того, чтобы работать).
  • Nginx работает на порту 80.

Когда пользователь подключается к нашему веб-сайт и искать что-то на нем, он подключается только через порт 80, но не через 5678. Мы можем проверить это работает «NetStat -an ».

Так что мой вопрос:: Если клиент никогда не подключается напрямую к порту поисковой системы, зачем нам его открывать?

ответ

2

клиентские запросы Обычно приходят на ваш веб-сервер (порт 80 или 443), а также на веб-сервер (ваш PHP или ваш java-код) имеет логику подключения к вашей поисковой системе и отправки результата клиенту через порт 80/443 (локальное соединение сокетов, если веб-сервер и поисковый сервер работают на одном сервере). поэтому клиентам не нужно напрямую подключаться к порту вашего поискового сервера (5678). (из внешних сетей). может быть внутренним интерфейсом вашего внутреннего сервера и внутренним интерфейсом поисковых систем, локально подключаемым через локальное соединение сокета.

Я не уверен, как вы запускаете свой веб-сервер и поисковую систему, два разных сервера или nginx действуют как балансировщик нагрузки и отправляют клиентский запрос на несколько серверов поиска. я думаю, что ваш порт поисковой системы использует внутренне для связи с вашим веб-сервером. или вы можете запустить как nginx, так и сервер поиска на том же сервере.

Предположим, что ваш порт брандмауэра или порт перенаправления маршрутизатора 80 запрашивает порт вашего порта поиска 5678 (переадресация портов).

попробовать это на поисковом сервере

netstat -pant 

это даст ваши все детали соединения, как локальный адрес, внешний адрес, состояние, и PID/Название программы

Надежда, что помогает

+0

Специально полезный как: netstat -pant | grep '11 .11.11.11: 5678 ' –

1

Вы можете подключиться к веб-серверу с помощью другого порта. Порт 80 по умолчанию используется для веб-серверов. (порт 443 для безопасного, https, соединений), поэтому он обычно не указан, так как он «понимается»

Но вы можете, фактически, указать другой порт для подключения. В вашем примере, пользователь должен указать, какой порт они хотят, чтобы подключиться к в URL

http://www.example.com:5678 
+0

Я имею в виду: если клиент никогда не подключается напрямую к порту поисковой системы, почему мы должны держать его открытым? –

+1

Я делаю некоторые предположения здесь, но я предполагаю, что сайт (на порту 80) подключается к себе на порт 5678, чтобы получить ответ на поисковый запрос. – Xinbi

0

По той же причине, что некоторые службы живут на других портах, например 22, 3000, 3306, 8080, 9000, вы можете получить доступ к этим портам напрямую, но, возможно, сом другие приложения/службы/протоколы подключаются к нему внутренне или могут даже не находиться на одном сервере, например, если у вас есть отдельные серверы приложений/db/mail, они будут связываться друг с другом по портам.

Смежные вопросы