Эквивалент iframe на стороне сервера

Есть ли способ создать подобный iframe на стороне сервера? Дело в том, что мне нужно войти на определенную страницу во внутренней сети моего общества из административной части нашего веб-сайта.

У меня уже есть ссылка SQL на базу данных, которая отлично работает, но здесь я мог бы получить доступ к страницам, не дублируя исходный код на веб-сервере.

Моя инфраструктура следующая:

Веб-сервер находится в DMZ и имеет следующий локальный IP-адрес: 192.168.63.10. Наш интранет-сервер НЕ находится в DMZ и имеет следующий IP-адрес: 192.168.1.20.

В нашем брандмауэре есть правила для серверов, и я только что добавил следующее: DMZ-> LAN Разрешить трафик HTTP / HTTPS и LAN-> DMZ Разрешить HTTP / HTTPS (точно так же, как мы сделал для перенаправления SQL)

Я пробовал следующую функцию PHP:

$ch = curl_init();

// set URL and other appropriate options (also tried with IP adress instead of domain)
curl_setopt($ch, CURLOPT_URL, "http://intranet.socname.ch/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);

Я также пробовал:

$page = file_get_contents('http://192.168.1.20/');
echo $page;

Or:

header('Location:http://192.168.1.20');

Но во всех случаях он отлично работает из локального, но не из Интернета. Из Интернета он не загружается и через некоторое время сообщает, что сервер не отвечает.

Спасибо за вашу помощь !


person GRosay    schedule 05.09.2013    source источник
comment
Похоже на проблему с DNS. У вас действительно может быть сервер, который отвечает на http: 80, действует как сервер, но сам не может звонить по телефону. Кстати: ваш локальный хост также находится в Интернете, нет никакой разницы, кроме того, что локальный хост, вероятно, не виден снаружи. Проверьте DNS-настройки вашего сервера!   -  person davidkonrad    schedule 05.09.2013
comment
Адреса 192.168.0.0 являются частными IP-адресами, они не будут доступны в Интернете. Вам нужно будет создать прокси-сервер на вашем публичном сервере для извлечения и повторного предоставления контента всему миру.   -  person Orangepill    schedule 05.09.2013


Ответы (1)


Ваше первое и второе решения могут сработать. Может ли ваш веб-сервер получить доступ к 192.168.1.20? (попробуйте ping 192.168.1.20 на своем веб-сервере) или разрешите имя хоста intranet.socname.ch? (попробуйте nslookup intranet.socname.ch)

То, что вы ищете, называется «прокси», вот простой проект PHP, который я нашел: https://github.com/Alexxz/Simple-php-proxy-script

Загрузите репо, скопируйте example.simple-php-proxy_config.php в simple-php-proxy_config.php и измените $dest_host = "intranet.socname.ch";

Это должно сработать! (также может потребоваться изменить $proxy_base_url)

person Jason Leung    schedule 05.09.2013
comment
Веб-сервер может пинговать интрасеть (только когда я отключил блокировку PING в настройках брандмауэра). Код прокси кажется хорошим решением, но он также перенаправляет страницу на: 192.168.0.1:8090/httpclient.html?u=http://intranet.socname.ch Где 192.168.0.1 - IP моего брандмауэра - person GRosay; 05.09.2013
comment
Неважно ! Это решение отлично работает! Мои правила брандмауэра противоречили другим, поэтому вчера он не работал ... Спасибо за ответ :)! - person GRosay; 06.09.2013