Вопрос

Я использую веселый сервер Ubuntu с двумя настроенными сетевыми интерфейсами:один общедоступный IP-адрес, один частный.Когда я запрашиваю IP-адрес сервера, я получаю общедоступный IP-адрес.Если у меня несколько интерфейсов, существует ли лучший способ гарантировать, что я получу общедоступный интерфейс (а это то, что мне нужно)?

<?php
echo " <table>";
echo "<tr><td>" .$_SERVER['SERVER_ADDR'] ."</td><td>SERVER_ADDR</td></tr>";
echo "<tr><td>" .$_SERVER['SERVER_NAME'] ."</td><td>SERVER_NAME</td></tr>";
echo " </table>";
?>
Это было полезно?

Решение

У меня сложилось впечатление, что вы получите адрес того места, откуда поступает трафик, поэтому, если вы хотите всегда действовать в отношении публичного интерфейса независимо от того, откуда пришел ваш запрос, вам придется игнорировать $_SERVER['SERVER_ADDR'] и определите IP-адрес, с которым вы хотите иметь дело в коде (его жесткое кодирование, анализ таблицы интерфейсов и поиск чего-то, чего нет в частной сети, что у вас есть).

Другие советы

Я думаю, что Apache решает эту проблему, когда вы настраиваете свои домены.Apache рекомендует использовать отдельный демон для каждого IP-адреса, чтобы обеспечить их прямоту:http://httpd.apache.org/docs/1.3/vhosts/ip-based.html

Создайте отдельную установку httpd для каждого виртуального хоста.Для каждой установки используйте директиву Listen в файле конфигурации, чтобы выбрать IP-адрес (или виртуальный хост), который обслуживает демон.например

`Listen www.smallco.com:80`

Рекомендуется использовать IP-адрес вместо имени хоста (см. Предостережения относительно DNS).

ИЛИ

Вы, вероятно, могли бы использовать свой /etc/hosts файл, чтобы гарантировать, что выбранное вами имя хоста всегда соответствует желаемому IP-адресу.Видеть: http://www.faqs.org/docs/securing/chap9sec95.html для информации о /etc/hosts.

Вы всегда должны получать общедоступный IP-адрес от общедоступных и частный IP-адрес от людей в вашей частной сети.Не существует разумного способа гарантировать, что вы всегда получите общедоступный IP-адрес, и это не имеет смысла.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top