
Я не совсем понимаю, как 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