Могу ли я использовать один и тот же порт на 127.0.0.1 и 192.168.xx?

Могу ли я использовать один и тот же порт на 127.0.0.1 и 192.168.xx?

Я не совсем понимаю, как localhost соотносится с частным IP-адресом, назначенным каждой машине.

Если я запустил сервер на localhost:8080, могу ли я запустить что-то еще на 192.168.xx:8080?

А именно, если я запущу сервер Python Waitress на localhost:8080 и использую NGINX для обратного прокси-сервера, смогу ли я заставить NGINX прослушивать порт 8080?

решение1

Если я запустил сервер на localhost:8080, могу ли я запустить что-то еще на 192.168.xx:8080?

Да, на одном и том же порту могут быть разные прослушивающие сокеты, если они привязаны к разным локальным адресам (т. е. сокеты отслеживаются в соответствии с комбинациями адрес:порт).

(Но избегайте смешивания определенных address:portслушателей с «любым адресом» 0.0.0.0:portили [::]:portслушателем. Обычно это также разрешено, но имеет более строгие требования, например, я думаю, что Linux запрещает это, если у двух программ разные UID.)

Я не совсем понимаю, как localhost соотносится с частным IP-адресом, назначенным каждой машине.

Это не так. Имя "localhost" специально разрешается в адреса 127.0.0.1 и [::1], больше ничего. Оно никогда не использует ваши реальные адреса локальной сети.

решение2

localhostпереводится как 127.0.0.1, поэтому localhost:8080и 127.0.0.1:8080являются одним и тем же.

192.168.x.xэто другой IP-адрес, поэтому тот же порт может быть использован повторно. Вы можете запускать разные серверы снова 127.0.0.1:8080и снова 192.168.0.1:8080, и если у вас есть больше IP-адресов, вы можете даже продолжать с eg: 192.168.0.2:8080и192.168.0.3:8080

Связанный контент