[우분투, 민트] nginX에서 reverse proxy(리버스 프록시) 사용하기

아칼

리눅스처럼 자유로운 블로그를 희망합니다. 아름다운 제주도의 다양한 소식을 전할수 있기를 희망합니다. 그렇다고 이미지를 마음대로 가져다 쓰라는 것은 절대 아닙니다.

You may also like...

20 Responses

  1. 멤피스 댓글:

    위 예에서 akal과 eilsin이 각각 어디를 가리키는 지 앞에 있는 그림과 연결해서 설명해주시면 좋겠습니다

    • 아칼 댓글:

      앗 test.eilsin.co.kr 은 미처 수정하지 못한 오타입니다. test.akal.co.kr 로 정정했습니다.
      그림과 연결해서 설명하는 것은 파일을 만들어서 이삼일내로 보강하도록 하겠습니다. 지적감사합니다.

    • 아칼 댓글:

      마침 일이 빨리 끝나서 집에 오자마자 수정 해두었습니다. 다시한번 감사드립니다.

  2. 괴ㅈ 댓글:

    이걸 알았다면 진작에 이렇게 세팅했을텐데 추후에 추가하려고 하니 머리가 복잡합니다. 이미 letsencrypt와 self signed ssl등이 돌아가고 있어서 더 그렇게 느껴지네요. ㅠㅠ

    • 아칼 댓글:

      한두개의 서버만 운영할때는 비효율적일수도 있겠습니다만, 서버의 중요도나 서버의 대수가 많을때는 리버스 프록시를 활용하는 것이 확실히 좋은 답이 될 것 같습니다. 크게 어렵지는 않습니다 ^-^;

  3. SDK 댓글:

    안녕하세요
    지금 저에게 딱 필요한 것이였는데
    배우고 갑니다.

    감사합니다.

  4. 컴초보 댓글:

    안녕하세요.
    2번째 그림인 [리버스 프록시 서버를 사용한 경우]의 그림에서 실제로 랜선을 연결하는 구성을 할때

    1. 공유기와 리버스 프록시 사의 물리적 연결은 그냥 랜선을 1:1로 꼽아서 연결하면 되겠고

    2. 리버스프록시와 하위서버간의 연결은 중간에 스위치 허브를 두고 랜선을 1:다수로 연결해야 하나요?

    실제로 랜선연결을 어떻게 해야 하는지 조금 헷갈립니다.
    그냥 공유기에 리버스프록시와 하위서버를 모두 연결해도 될것 같지만, 그렇게 되면 복잡한 데이터 전송이 일어날거 같거든요.

    너무 몰라서 질문이 제대로 전달 되었는지 모르겠습니다. ㅎㅎ

    • 아칼 댓글:

      1. 말씀대로 공유기와 리버스 프록시 서버는 랜선을 꼽아서 연결 하시면 됩니다.

      2. 하위서버들은 그냥 공유기에 연결하셔도 됩니다. 공유기 자체에 허브 기능이 있습니다.

      3. 웹서버는 포트를 지정하지 않으면 기본적으로 80번 포트를 사용합니다. 공유기에서 포트포워딩을 이용해서 80번 포트로 들어온 요청은 전부다 리버스 프록시 서버로 보내게 되겠죠 ?! 그럼 리버스 프록시 서버가 하위서버들의 주소를 호출해서 요청을 다시 보내고 답변을 받은 후에 그 내용을 요청한 컴퓨터에게 다시 전달하는 역할을 합니다.

      4. 만약 리버스 프록시 서버가 없다면 하위 서버들은 80번 포트를 사용할 수 없습니다. 포트의 중복사용은 불가능하기 때문이죠. 그냥 간단하게 우편 배달을 할때 명확한 번지수를 모르면 배달할수 없다고 생각하시면 되겠습니다. ^-^;

      • 컴초보 댓글:

        친절한 설명 감사합니다~

        공유기에 모두 꼽는다는 가정하에, 외부에서 요청이 1건 들어오면

        1. 공유기 > 리버스프록시
        2. 리버스 프록시 > 하위서버 전송(공유기를 통해)
        3. 하위서버 > 리버스 프록시(공유기를 통해)
        4. 리버스 프록시 > 공유기

        이렇게 4번의 부하를 공유기가 부담해야 하는데,
        리버스프록시와 하위서버간의 데이터 전송도 공유기를 통해서 해야 하니
        리버스프록시와 하위서버간의 전송은 또 다른 내부 네트워크 망을 통해 이뤄지는게 좀 더 맞지 않나는 생각이 드는데, 어떻게 생각하세요? 인터넷을 찾아봐도 국내 관련 포스팅은 여기에 대한 구체적인 설명이 없더라고요. 외국에선 보이긴 하지만…

        https://drive.google.com/open?id=1TlbwdwqfVGZS_1nPgv6Y65gEclwJ1o6r

        첨부 이미지를 보면
        왼쪽 구성에서 공유기 입장에선 프록시와 서버간의 전송도 처리해줘야 하지만,
        오른쪽 구성에서 공유기는 그냥 프록시와만 통신하면 되는 구조입니다.

        보통 웹사이트가 50 request를 처리한다 치면
        왼쪽 구성에서 공유기는 200건(in/out 합쳐 4배)을 전송 처리해야 하는 격이 되고
        오른쪽 구성에서 공유기는 100건(in/out 합쳐 2배)의 전송을 처리해야 하는거 같은데,

        제가 뭘 몰라서 놓쳐서 이런 생각을 하는건지 어떤건지 잘 모르겠습니다.
        어떻게 생각하세요?

        • 아칼 댓글:

          일단 서비스의 양과 대역폭에 의해서 결정되어야 한다고 봅니다. 동시 접속이 50 Request면 작은 서비스도 아니고 개인이 공유기로 구현할 서비스도 아닌것 같습니다. 네이버 파워블로거의 하루방문자가 2만명 정도인것을 상정해보면 4.32초에 한명꼴입니다. 물론 산술적 계산에 의한 것이기 때문에 동시접속이 몰리는 시간대나 동시에 몰리는 상황이 발생할때도 물론 있겠죠.
          제가 이런 수치를 말씀드리는 이유는…50 request 를 동시에 처리하는 경우도 거의 없지만 (일단 요즘 웹서비스도 비동기식 처리죠 ^-^) 그정도면 이미 공유기로 서비스할 내용이 아닌겁니다.

          제가 공유기를 이용한 프록시 서버를 올린 이유는 저가형 시스템을 이용하거나 혹은 라즈베리 파이 라던지 여러가지 상황에서 서버를 반드시 분리해야 하는 경우가 있습니다. 이런 경우에 프록시 서버를 사용하면 충분히 쉽게 시스템을 구성할수 있다는 취지구요. 요즘 공유기 기가와이파이를 지원해서 왠만한 대역의 사용자수는 충분히 커버가 됩니다 🙂 물론 프록시 서버는 대형 시스템에서도 로드밸런싱을 위해서 사용되는 시스템이기 때문에 프록시 서버의 하드웨어적인 사양도 좋아야겠지요.

          계속해서 네트워크 라인을 물고 있는 토렌트들과 달리 웹 서비스는 request 신호를 보내고 answer 를 받아서 신호에 맞게 그때그때 처리하기 때문에 네트워크 부하가 생각만큼 심하지도 않을거라고 생각합니다. 걱정하시고 말씀하신 정도의 트래픽을 예상하신다면 그건 개인이 공유기로 시스템을 구현할 내용과는 이미 거리가 멀어진것 같습니다 🙂

          참고로 현재 사이트도 공유기와 HP N54L 마이크로 서버를 이용해서 서비스 중인데, 평균 일일 700명 정도이고 많을때는 3,000명 정도가 들어왔는데 프록시 서버에서 문제가 생기는 경우는 전혀 없었습니다.

          https://brunch.co.kr/@alden/11

          이런글도 참고해보시면 좋겠네요. 로드밸런싱을 위한 upstream 설정인데… 프록시 서버와 마찬가지로 앞단에 있는 서버에 부하가 생기긴 하겠지만 충분히 감당할만하고 분산하는 것이 더 이롭지 않을까 하는 내용이 있습니다. ^-^;

          • 컴초보 댓글:

            감사합니다. 잘 몰라서 막~ 질문드렸는데 너무너무 감사합니다. 좋은 주말 되시길… 감사합니다

  5. Dailyworker 댓글:

    블로그 잘 봤습니다 ㅎㅎ
    해당 글의 부분 인용을 하려고 하는데 출처를 남기고 인용을 해도 될련지요?

  6. 궁금 댓글:

    리버시 프록시에서 webdav 를 지원하는지요? 도커로 nginx proxy manager 로 연결된 webdav 가 제대로 동작하지 않습니다. 설정이 부족한것 같은데 이리 저리 바꿔봐도 잘 안되어 문의드려봅니다.

    • 아칼 댓글:

      제가 글을 너무 늦게 봤네요. 일이 바빠서 T-T
      WebDAV는 설정보다 nginX 모듈을 따로 설치해야 합니다. 그게 아니라면 해당 모듈이 설치되어 있는 nginX를 받아서 설치해야 작동하죠.

      https://akal.co.kr/?p=1172

      이 글을 참고하시기 바랍니다.

      그리고, 도커에서의 사용은 제가 안해봐서 모르겠습니다. 죄송합니다.

  1. 2017년 3월 12일

    […] [우분투, 민트] nginX에서 reverse proxy(리버스 프록시) 사용하기 […]

  2. 2018년 9월 5일

    […] [우분투, 민트] nginX에서 reverse proxy(리버스 프록시) 사용하기, http://akal.co.kr/?p=1173 […]

  3. 2019년 3월 11일

    […] [우분투, 민트] nginX에서 reverse proxy(리버스 프록시) 사용하기 […]

아칼에 답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.