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

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

QA

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

본문

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

 

// 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">

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 63
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT