외부 아이피 주소로 내부 서버 페이지 로딩 시키기 문의 입니다.

일단.. 관심가져 주셔서 감사합니다..

 

// 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('http://192.168.0.3/index.php'); 로 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

Copy
<?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 

Copy
<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><?phpinclude('http://192.168.0.3/index.php'); ?>
 

 

B서버(192.168.0.3) - /index.php

Copy
<img src="/img/logo.png">

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

의뢰를 해야 할까 싶습니다;; 혹시 괜찮으시면......쪽지라도 주심이;;

댓글을 작성하려면 로그인이 필요합니다.

제가 알기로 그누에선 물리적인 경로의 이미지로 썸네일 함수를 거쳐 웹상에 보여줄 이미지 파일을

생성하는걸로 알고 있습니다.

아마도 물리적으로 접근을 할 수 없어 썸네일 이미지가 생성되지 않는건 아닐까요?

해당 경로 가셔서 썸네일로 생성된 이미지가 있나 찾아 보셨으면 합니다. 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고