Важно ли использовать 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-адрес или имя хоста машины. Говорят, что это дает небольшой выигрыш в производительности, хотя я никогда не тестировал это.

Другие вопросы по тегам