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

Има ли някакъв начин да се създаде "iframe-like" от страната на сървъра? Факт е, че трябва да вляза в определена страница от интранета на моето общество от административната част на нашия уебсайт.

Вече имам SQL връзка към базата данни, която работи добре, но тук бих осъществил достъп до страниците, без да дублирам изходния код на уеб сървъра.

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

Уебсървърът е в DMZ и има следния локален IP: 192.168.63.10. Нашият интранет сървър НЕ е в DMZ и има следния IP адрес: 192.168.1.20.

Нашата защитна стена има сървърни правила и току-що добавих следното: DMZ->LAN Allow HTTP/HTTPS трафик и LAN->DMZ Allow 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, действа като сървър - но самият той не може да се обади. BTW: Вашият localhost също е в интернет, няма разлика освен localhost вероятно не се вижда отвън. Проверете 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