외부 아이피 주소로 내부 서버 페이지 로딩 시키기 문의 입니다.
본문
일단.. 관심가져 주셔서 감사합니다..
// A 서버와 B 서버의 php.ini에서..
allow_url_fopen = on
allow_url_include = on
로 변경 하였습니다.
// A서버는 192.168.0.2(내부아이피)로 잡으면.. 10.0.0.2(외부아이피)로 접속이 됩니다.(예입니다.)
// B서버는 내부 아이피(서버)는 192.168.0.3 입니다. 여기 링크걸어서 한페이지 전체를 가지고 옵니다.
// A서버 에서 include(''); 로 include 하게 됩니다.
상황1. db 정보는 정확하게 불러 옵니다(문자열은 가지고 옵니다.).
상황2. 거기에 착안해서 192.168.0.3의 모든 태그 img 주소를.. img src="http://<?=$_SERVER['HTTP_HOST']?>/img/logo.png" 이렇게 모두 바꿨습니다. 이렇게 안바꾸니 http://10.0.0.2/img/logo.png로 이미지를 불러옵니다. 10.0.0.2에는 logo.png 파일이 없습니다ㅠ
상황3. 제 노트북에서 테더링을 잡고 10.0.0.2로 접속을 하게 되면 문자열은 정상적으로 출력이 되나......
현상1. 사진은 엑박이 뜹니다.
현상2. 속성 주소는 192.168.0.3/img/logo.png 로 보입니다.
현상3. 여전히 모든 이미지는 엑박 처리가 됩니다.
자체 판단 내용 : 외부 아이피 10.0.0.2로 접속을 하였기 때문에 내부 서버 192.168.0.3의 이미지 주소를 땡겨 올 수 있느냐 없느냐의 차이같습니다. 10.0.0.2로 접속을 하여 192.168.0.3의 db 문자열을 가지고 올 수 있으면 이미지도 가지고 올 수 있지 않겠냐는 판단인데.... 내부 설정을 건들여야 하는지.. 아니면 다른 방법이 있는지 문의 드립니다.
포트포워딩은 불가능합니다; 제가 네트워크는 건드릴 수가 없거든요;;
각 서버는 접근 가능합니다. 외부 아이피 한개 받았고 A,B 서버는 제 앞에 있거든요;;
B서버의 이미지 파일을 img src="http://192.168.0.3/img/logo.png" 로 코딩했는데 엑박이 뜹니다.
어떻게 해결하면 될까요ㅠㅠ
A 서버 외부 아이피 주소로 B 내부 서버 페이지를 통채로 가지고 오고자 합니다ㅠ
답변 2
제가 알기로 그누에선 물리적인 경로의 이미지로 썸네일 함수를 거쳐 웹상에 보여줄 이미지 파일을
생성하는걸로 알고 있습니다.
아마도 물리적으로 접근을 할 수 없어 썸네일 이미지가 생성되지 않는건 아닐까요?
해당 경로 가셔서 썸네일로 생성된 이미지가 있나 찾아 보셨으면 합니다.
포트포워딩할 상황도 안되고...
nfs 서버 세팅할 상황도 안되고...
오로지 php로만 해결해야 한다면....
A서버(10.0.0.2) - /get_image.php
<?php
$path = $_GET['path'];
$path = "http://192.168.0.3$path";
$ext = pathinfo($path, PATHINFO_EXTENSION);
$fp = fopen($path, 'rb');
header("Content-Type: image/$ext");
header("Content-Length: " . filesize($path));
fpassthru($fp);
A서버(10.0.0.2) - /a.php
<script>
var getLocation = function(href) {
var l = document.createElement("a"); l.href = href; return l;
};
function get_image_from_b_server(){
var image = event.srcElement;
var l = getLocation( image.src );
if ( l.hostname != '192.168.0.3' ) return;
image.src= '/get_image.php?path=' + l.pathname;
}
window.onload = function(){
var images = document.getElementsByTagName('img');
for(var i = 0; i < images.length; i++) {
images[i].onerror = get_image_from_b_server;
}
};
</script>
<?php
include('http://192.168.0.3/index.php');
?>
B서버(192.168.0.3) - /index.php
<img src="/img/logo.png">
!-->!-->!-->