nginx reverse proxy_2(내부 서버에 요청하는 경로는 변경하기)

이진영·2022년 10월 10일
1

proxy

목록 보기
3/3

생성일: 2022년 2월 27일 오후 1:54
태그: proxy

nginx reverse proxy 테스트3: 경로 구분하기(내부 서버에 요청하는 경로는 변경하기)

시나리오

  • 예를 들어 , 자신의 서버/blog/index.html 과 같인 proxy에 요청했을 때,
  • 내부 nginx 에서는 자신의 서버/index.html 을 요청한 것처럼 경로 변경하기

  • 옵션에 rewrite만 추가하면 된다.

rewrite 옵션 이해

  • regex : 매칭되는 URL 패턴을 설정
    • nginx 에서 채택한 정규표현식 문법 PCRE 구분으로 본래 Perl 이라는 언어에서 유래
  • URL : 변경할 URL 기재
  • flag : 여러 개의 location 이 설정되어 있을 때 , 변경된 URL 이 다시 다른 location에 매칭될 수 있으므로, 이를 어떻게 처리할지를 설정
    • break 를 쓰면, 변경된 url이 다시 다른 location 설정에 따르지 않고, 현재의 location 설장만 따르고 끝남
💡 rewrite regex URL [flag];
location /blog/ {
	rewrite ^/blog(.*)$ $1 break;
	proxy_pass http://docker-nginx;

의 코드의 정규표현식을 이해하자면

  • 위 location 설정이 적용되는 original 경로는 /blog/ 를 포함하고 있음
  • ^ : 문자열 시작을 나타냄
    • locationhost/blog/test.html 의 경우 , localhost 는 주소이므로 /blog/test.html 이 location 에 들어오게 됨
    • 따라서 ^(/blog) 는 우선 URL 이 /blog로 시작하는 경로를 의미함
  • 점(.) : 임의의 한 문자를 의미
    • : 0 회 이상 나타나는 문자를의미
  • $ : 끝나는 문자열을 의미
  • 즉, ^/blog(.*)$ 는 경로가 /blog 로 시작하면서, 그 이후에 어떤 경로든 쭉 끝까지를 의미함
  • $1 은 (.*) 괄호로 되어 있는 부분을 의미함

실습 파일 : 05_NGINX_PROXY_CH_PATH

  • 이 부분만 바꿔주면 된다.

  • 실행을 해주자!! —>docker-compose up -d

    일단 1차 적으로는 성공

해당 컨테이너로 들어가자

nginx

  1. blog —> nginx.conf

    또 해당 경로로 들어가서 default.conf의 location 보자

    여기에 blog index.html이 있다.

apache 도 잘된다.

이것은 저번시간과 같기 때문에 생략!

번외) 실습 사이트도 있다. —> https://nginx.viraptor.info/

참고(nginx 설정)

  • nginx 설정은 매우 다양하므로, 이미 작성된 설정을 검색을 통해 찾고, 복사 붙여넣기하는 경우도 많음
  • 설정이 버전별로도 바뀔 수 있고, 매우 다양하므로, 주요 참고 사항
  • 주요 nginx 참고 설정 (php-fpm 설정)
    • 워드프레스 등은 php 를 사용하며, 이때 php 모듈 설치와 함께 , nginx 에 fastcgi 설정을 다음과 같이 해줘야함
    • location 이후에 ~ 문자가 올 경우, 이후의 표기는 정규표현식으로 처리함
      • 아래와 같이 쓰면 .php로 끝나는 웹주소의 경우를 의미함

  • 주요 nginx 참고 설정(에러 페이지 설정)
    • 특정 HTTP 에러에 따라 설정한 별도 에러페이지를 보여주기 위해서 다음과 같이 설정
  • 주요 nginx 참고 설정(캐쉬 설정)
    • HTTP 응답에 다음과 같이 ico, css 등으로 끝나는 브라우저 캐쉬상에서 최대한 보관하라는 명령을 넣을 수 있음

    • 이 경우, 웹페이지 로딩 속도는 개선되지만, 해당 파일이 변경될 가능성이 있다면, 업데이트가 안되므로, 불변하는 파일만 설정하는 것이 좋음

    • location의 ~* 는 이후에 나오는 정규표현식에 대소문자 구별을 하지 말라는 의미

profile
내가 공부한 것들을 적는 공간

0개의 댓글