Важно ли использовать localhost/127.0.0.1, а не собственный IP-адрес компьютера?
Я нахожусь на Amazon AWS EC2 под управлением Amazon Linux, хотя это может не иметь значения для ответа.
Скажем, у меня есть три хоста, H1, H2, H3, с частными IP-адресами 10.0.0.1, 10.0.0.2 и 10.0.0.3. Это может быть представлено в файле /etc/hosts с такими строками:
127.0.0.1 localhost localhost.localdomain
10.0.0.1 H1
10.0.0.2 H2
10.0.0.3 H3
В коде php я делаю такие вещи, как запуск curl для доступа к вещам на конкретном хосте, основываясь на неявном знании того, что предлагает этот хост. Я предпочел бы не беспокоиться о том, является ли конкретный хост, к которому я обращаюсь, хостом, выполняющим сам код, просто доступ к H1, H2 или H3. Я мог бы использовать разные файлы /etc/hosts на каждом хосте, изменив строку со своим частным IP-адресом, чтобы использовать адрес 127.0.0.1. Но так ли это на самом деле? Если я использую идентичные файлы /etc/hosts на всех машинах, жертвую ли я какой-либо производительностью или функциональностью?
Вызывает ли сетевой доступ к собственному частному IP-адресу компьютера реальный "внешний" трафик или он обнаруживается и использует петлевой соединитель, как, например, 127.0.0.1? Видит ли процесс, получающий запрос, исходный адрес как собственный частный IP-адрес компьютера, или он все равно видит 127.0.0.1?
1 ответ
Используя идентичный hosts
файл в порядке и не будет влиять на производительность, трафик останется локальным, если вы подключитесь к H1
от H1
, Однако, если вы подключитесь к localhost/127.0.0.1
, исходный IP будет 127.0.0.1
как хорошо, но если вы подключитесь к H1
, исходный IP будет 10.0.0.1
(например, в журнале Apache).
Одно отличие: некоторые приложения, в частности MySQL/MariaDB, переключаются на использование сокетов Unix Domain для трафика, если вы подключаетесь к localhost
, но используйте стек IP при использовании 127.0.0.1
или фактический IP-адрес или имя хоста машины. Говорят, что это дает небольшой выигрыш в производительности, хотя я никогда не тестировал это.