apache 서버로 접속시 다른 머신의 웹서버로 redirect?

dogface의 이미지

제목이 적절할지 모르겠습니다만...

apache 설정에 대한 질문입니다.
지금까지 두 도메인을 virtualhost로 등록하여 사용하고 있었습니다만(apache+php+mysql),
그 중 한 도메인에 대해 별도로 내부IP를 가진 WAS서버(tomcat)를 만들고 이 WAS서버로 redirect(?) 시키려고 합니다.
가능할까요?

phonon의 이미지


네크윜 구성이 현재 이런 것 같습니다.
A(client) <-> B(apach) <-> C(WAS, 내부IP)

redirect로 아래와 같이 하시고 싶으시지요?
A(client) <-> C(WAS, 내부IP)

A의 입장에서 C의 IP가 어디에 있는지 알 방법이 없습니다.
VPN를 사용한다면 가능하겠지만,
웹의 기능만 사용해서는 불가능하다고 생각듭니다.

dogface의 이미지

답변감사합니다.
하지만, 그런 사례가 있다는 얘기를 들어서요...

monovision의 이미지

mod_proxy 를 쓰면 아마 가능할 겁니다.

dogface의 이미지

답변감사합니다. 근데...
말씀해주신 mod_proxy를 찾아보니 서브도메인만 가능한건가요?
제가 사용할 도메인은 www.xxx1.co.kr, www.xxx2.or.kr 이런식으로 다르답니다.
혹시 이런 경우에도 적용가능할까요?

kirrie의 이미지

mod_rewrite의 투명 프록시 기능 이용하면 될 것 같습니다. 자세한건 메뉴얼이나 구글링...
--->
데비안 & 우분투로 대동단결!

--->
데비안 & 우분투로 대동단결!

김정균의 이미지

document root 에 index.php 하나 만들어 놓으시고, path info 나 query string 등을 잘 이용하셔서 curl 같은 것으로 relay 하는 것을 만드는 것도 한 방법입니다.

css-validator.kldp.org 에서 예전에 jigsaw java web server 연결할 때 사용하던 코드인데 응용해 보시기를..

아래는 query string 을 이용했는데, WAS의 url 을 그대로 이용하시기를 바란다면 PATH_INFO를 이용하시는 것이 더 좋을 겁니다.

또한, cookie 도 curl 에서 제어할 수 있으니 인증도 잘 짜시면 할 수 있을 겁니다. 아래는 인증을 할 필요가 없는 곳의 코드라서 cookie 는 따로 처리하지 않습니다.

function printe ($err) {
    echo "<script type=\"text/javascript\">\n" .
         "  alert('$err')\n" .
         "  history.back();\n" .
         "</script>\n";
 
    exit;
}
 
if ( ! extension_loaded ('curl') ) :
     printe ("Not loaded Curl Extension");
endif;
 
$uri = $_SERVER['QUERY_STRING'];
$uri = $uri ? "?${uri}" : '';
$method = $_SERVER['REQUEST_METHOD'];
 
$_server = "http://css-validator.kldp.org:8080/{$uri}";
 
$_lang = ( ! $_GET['_lang'] ) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : $_GET['_lang'];
#$_lang = 'ko';
 
$c = curl_init ();
 
curl_setopt ($c, CURLOPT_URL, $_server);
curl_setopt ($c, CURLOPT_TIMEOUT, 60);
curl_setopt ($c, CURLOPT_NOPROGRESS, 1);
curl_setopt ($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($c, CURLOPT_USERAGENT, "CSS-Validator KLDP Wrapper 1.0");
curl_setopt ($c, CURLOPT_AUTOREFERER, 1);
curl_setopt ($c, CURLOPT_FOLLOWLOCATION, 1);
 
$header[] = "Host: css-validator.kldp.org";
if ( $_lang )
  $header[] = "Accept-Language: {$_lang}";
$header[] = 'Expect:';
 
curl_setopt ($c, CURLOPT_HEADER, 0);
curl_setopt ($c, CURLOPT_NOBODY, 0);
curl_setopt ($c, CURLOPT_HTTPHEADER, $header);
curl_setopt ($c, CURL_FAILONERROR, 1);
 
if ( $method == 'POST' ) :
    $_post = array ();
 
    if ( is_array ($_FILES['file']) ) :
        $_post['file'] = "@{$_FILES['file']['tmp_name']}";
    endif;
 
    $_post = array_merge ($_post, $_POST);
 
    curl_setopt ($c, CURLOPT_POST, 1);
    curl_setopt ($c, CURLOPT_POSTFIELDS, $_post);
endif;
 
$data = curl_exec($c);
 
if ( empty ($data) ) :
  printe (curl_error($c));
endif;
curl_close ($c);
 
$data = preg_replace ("!(</html>).*!s", '\\1', $data);
echo trim ($data) ."\n";
?>
dogface의 이미지

답변감사합니다. 근데 좀 더 들여다 봐야할 것 같네요.

impactbar의 이미지

c 앞단 장비에서 포트 포워딩 하시고 b장비 apache 에서 mod_jk 를 사용해서 연동하는게 좋을 것 같습니다.

위에 언급하신 mod_proxy 를 사용하는 것도 한 방법이고요

어떤 경우에든 c 앞단 장비에서 내부 IP(사설망일 경우)로 라우팅 해야됩니다.

phonon의 이미지

이미 말씀을 드렸듯이 순수 웹서버만의 기능으로는 무리입니다.

보안적인 입장에서 방화벽 앞단에 있던 웹서버를 내부망으로 넣으려는 이유는 잘 모르겠습니다만, impactbar님에서 말씀하셨듯이 라우팅정보가 필요합니다.
다른 곳에서 사용하고 있다는 얘기는 방화벽에서 그런 역할을 해 주고 있을 겁니다.

외부망(WAN/Internet)
|
|
방화벽----------DMZ(웹서버/WAS)
|
|
내부망(LAN) <- DB서버등등

위의 모델은 방화벽구성의 방법 중 일부입니다.
(10년동안 보안과 거리가 멀어져서 지금은 어떻지 잘 모름)
WAS를 내부망에 넣으신다면 DB서버와 같이 라우팅정보를 방화벽에 설정해 주셔야 합니다.
웹페이지 리다이렉트로만 접근하는 것은 불가능하다고 생각이 듭니다.
네트워크 구성을 다시 고려해 보세요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.