포트포워딩 설정에 관하여 질문이 있습니다.

theworkink117의 이미지

아래와 같은 상황에서, 웹서버 접속시
xxx.xxx.xxx.xxx:8181 또는 www.xxx.com:8181이 아닌
xxx.xxx.xxx.xxx 또는 www.xxx.com로 접속을 가능하게 하고 싶습니다.

현재 상황
> 통신사 : LG유플러스.
> 공유기 : 80포트 막혀있음.
> 공유기 포트 포워딩 : 외부 8181 접속시 -> 내부 80포트로 연결
> 내부 리눅스 웹서버 : 80포트로 웹서버 구축해놓음.
> 접속경로 : 외부에서 xxx.xxx.xxx.xxx:8181 또는 www.xxx.com:8181로 접속시,
공유기에서 8181을 80포트로 연결해주도록 하여, 접속이 문제 없이 가능.

제가 조사한 바로는, 호스팅을 구매한 서버에서 DNS설정을 통해
xxx.xxx.xxx.xxx 또는 www.xxx.com로 접속시
xxx.xxx.xxx.xxx:8181 또는 www.xxx.com:8181로 연결해 주는 것이 가능하다 들었습니다.

하지만, 저는 자체적으로 해결가능한 방안을 찾고 있습니다.

혹시 해결방안을 알고 계시다면, 조언 부탁드립니다.

* httpd.conf파일에 아래와 같이 virtualhost 설정을 추가해보았지만, httpd서버 기동이 실패하였습니다

ServerName www.xxx.com ProRequests Off ProxyPreserveHost On ProxyPass / http://localhost:80/ ProxyPassReverse / http://localhost:80/

swish95의 이미지

방법은 두가지가 있겠군요

1. 해당 서버에서 ssh 실행해서 8181 을 80 번으로 포트포워딩

2. 8181 포트로 proxy 서버 구성

------------------------------------------------------------
ProgrammingHolic

theworkink117의 이미지

2.의 내용이 잘 이해가 가지 않습니다.

기존의 리눅스 서버에 프록시 서버를 구축하여 외부의 8181포트를 내부 리눅스서버의 80포트으로
돌린다는 말씀이신가요?

공유기의 포트포워딩과 프록시 서버의 포트포워딩과 어떤 차이가 있죠?

swish95의 이미지

공유기의 포트포워딩과 내부 포트 포워딩은 당연히 어디에서 처리하느냐에 차이일뿐 차이가 없습니다.

프록시는 외부에서 요청이 들어오면 중계해줘야 하니 당연히 프록시 서버가 추가로 뜨게 되는거죠

------------------------------------------------------------
ProgrammingHolic

theworkink117의 이미지

공유기에서 80번포트가 막혀있을때
중계기 역할을 하는 프록시 서버가 80번포트를 잡아주게 설정해야한다는 말씀인가요?

80번 포트로는 공유기를 거쳐서 리눅스 서버로 도달하지 못하는데
어떻게 이게 가능하죠?

swish95의 이미지

정균님의 답변처럼 외부에서 어떻게 하지 않는 이상 80번으로 들어온걸 8181로 보내줄수는 없습니다.

외부에서 그냥 www.xxx.xxx 로 들어와도 8181 로 들어오게 하는건 내부 영역이 아니라 외부 영역입니다.

고로 외부에서 어떻게 하지 않는 이상 8181 포트를 써줘야 합니다.

------------------------------------------------------------
ProgrammingHolic

theworkink117의 이미지

친절한 답변 감사합니다. ^^

김정균의 이미지

www.domain.com:8181 (외부) -> 공유기 (8181 -> 80 forwarding) -> 내부 서버(80)

이렇게 접근이 되는데, 외부에서 www.domain.com:8181 로 접속하는 걸 port 번호를 빼고 하고 싶다는 건가요?
이건 내부에서 처리가 불가능 합니다. 외부에서 조치를 취해 주어야 합니다.

CDN cache 서비스를 한다고 생각하면 됩니다. 단 이렇게 하려면 domain 변경이 필요하고, 사이트가 domain free 하게 동작할 수 있어야 한다는 조건이 필요 합니다. domain free 라는 건, 해당 서버이 www.domain.com 라고 가정할 경우, a.domain.com 을 할당하고, a.domain.com 으로도 정상 동작이 가능해야 한다는 얘기임니다.

1. 외부에 proxy server 생성 및 www.domain.com 을 proxy server 로 변경
2. 공유기 대표 IP 에 새로운 도메인 할당 (origin.domain.com)
3. proxy 서버에서 www.domain.com 으로 들어오는 연결을 origin.domain.com:8181 로 reverse proxy 설정

reverse proxy 설정은 apache, ngninx, haproxy, vanish 등을 이용하시면 됩니다. 성능을 고려 한다면 haproxy나 vanish 를 권장하며, 그냥 간단히 구현만 한다면 nginx 나 haproxy 중 쉬운걸로 하시면 됩니다. 설정 방법은 그냥 "nginx reverse proxy" 와 같이 검색 하시면 됩니다.

외부에 proxy 서버를 두지 않고서는 불가능 합니다.

제가 조사한 바로는, 호스팅을 구매한 서버에서 DNS설정을 통해 xxx.xxx.xxx.xxx 또는 www.xxx.com로 접속시 xxx.xxx.xxx.xxx:8181 또는 www.xxx.com:8181로 연결해 주는 것이 가능하다 들었습니다.

위의 방법도 외부에서 proxy 설정을 해 주는 방법으로 서비스를 해 줄 겁니다. DNS 설정만으로는 불가능 합니다. DNS protocol 자체에 port 를 처리할 수 있는 영역이 없기 때문임니다.

theworkink117의 이미지

답변감사합니다.

shint의 이미지

포트포워딩 - 일부 포트 허용 - 구형 공유기의 경우. 오래 사용시. 느려지는 현상
DMZ 모든 포트 허용 - 구형 공유기의 경우. 오래 사용시. 느려지는 현상
IIS Apache - redirection
ASP JSP PHP script - redirection
UPnP 지원 공유기
윈도우 ICS 인터넷 공유

PHP / 다른 페이지로 리디렉션(Redirection)하는 방법 – CODING FACTORY
http://www.codingfactory.net/11720

IIS에서 URL Rewrite를 사용해서 HTTP요청을 HTTPS로 리다이렉트하기
http://offbyone.tistory.com/334

Apache(아파치)를 사용해 redirect(리다이렉트) 하는 방법 7가지 : 네이버 블로그
http://blog.naver.com/PostView.nhn?blogId=nforce7050&logNo=140094893152&viewDate=¤tPage=1&listtype=0

포트포워딩 검색결과, 책 검색 : 네이버 책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=%ED%8F%AC%ED%8A%B8%ED%8F%AC%EC%9B%8C%EB%94%A9

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

오랜만에 오셨군요..
그런데 또 의미 없는 댓글은 여전 하네요

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.