nginx 중 location 에서 proxypass 와 rewrite 의 응용

1. 문제 설명
 upstream datacollectbackend{
      #ip_hash;
      server 10.234.1.211:6100 max_fails=5 fail_timeout=30s;
      server 10.234.1.26:7100 max_fails=5 fail_timeout=30s;
    } 



      location ~* ^/OCC_DATACO_WEB/.*$ {
           include deny.conf;

           proxy_pass http://datacollectbackend;
           include proxy.conf;

           error_log  logs/datacollection_error.log error;
           access_log  logs/datacollection_access.log  main;
       }

지금 은 OCCDATACO_WEB 이름 이 너무 길 어서 dt 로 바 꾸 고 싶 은 데 공사 가 아직 시작 되 지 않 았 습 니 다. 먼저 테스트 를 해 봐 야 합 니 다. www. ds. com / dt / posystem 에 OCC 를 호출 하 라 는 것 입 니 다.DATACO_WEB 공사 안 으로 들 어가.
그 러 니까 예전 에 www. ds. com / OCC 로DATACO_WEB / possystem 접근, 현재 www. ds. com / dt / posystem 접근 으로 변경.하지만 온라인 공 사 는 OCCDATACO_WEB, 하지만 현재 dt 프로젝트 가 완료 되 지 않 았 습 니 다. 과도기 에 있 습 니 다. 새로운 dt 가 완 선 된 후에 OCC 를 제거 해 야 합 니 다.DATACO_WEB 를 dt 로 바꾸다
원래 블 로그 주소:http://blog.csdn.net/mchdba/article/category/5981097 , 원래 csdn 블 로 거 mchdba 의 허락 없 이 전송 할 수 없습니다.
2, location 의 proxy패스
dt 의 점프 를 OCC 로 직접 전환 합 니 다.DATACO_WEB 같은 proxypass, 아래 와 같다.
 location ~* ^/dt/.*$ {
           include deny.conf;

           proxy_pass http://datacollectbackend;
           include proxy.conf;

          error_log  logs/dt_error.log error;
          access_log  logs/dt__access.log  main;
        }   

그리고 nginx 를 다시 시작 하고 www. ds. com / dt / posystem 을 통 해 방문 한 결과 다음 과 같은 오류 가 발생 했 습 니 다.
Sorry,      

    URL      ,        ,           。
        ,      

3, rewrite 로 location 대신
    location ~* ^/dt/.*$ {
          rewrite /dt/(.*) /OCC_DATACO_WEB/$1 break;

        }
    nginx,  www.ds.com/dt/possystem  ,     ,   。

4. 총화
rewrite 기능 은 nginx 가 제공 하 는 전역 변수 나 자신 이 설정 한 변 수 를 사용 하여 정규 표현 식 과 표지 위 치 를 결합 하여 url 재 작성 과 재 설정 을 실현 하 는 것 입 니 다.rewrite 는 server {}, location {}, if {} 에 만 놓 을 수 있 고 도 메 인 이름 뒤에 전 달 된 매개 변 수 를 제외 한 문자열 에 만 작용 할 수 있 습 니 다. 예 를 들 어http://seanlook.com/a/we/index.php?id=1&u=str / a / we / index. php 만 다시 씁 니 다.문법 rewrite regex replacement [flag];
도 메 인 이름 이나 매개 변수 문자열 에 대응 하면 전역 변 수 를 사용 할 수도 있 고 proxy 를 사용 할 수도 있 습 니 다.패스 역방향 에이전트.rewrite 와 location 기능 이 비슷 하고 모두 점프 를 실현 할 수 있 음 을 나타 낸다. 주요 차이 점 은 rewrite 는 같은 도 메 인 이름 에서 자원 을 얻 는 경 로 를 변경 하 는 것 이 고 location 은 같은 경 로 를 제어 하거나 역방향 대 리 를 할 수 있 으 며 proxy다른 기계 로 패스 하 다.rewrite 도 location 에 쓰 이 는 경우 가 많 습 니 다. 실행 순 서 는:
server 블록 을 실행 하 는 rewrite 명령 은 location 가 선택 한 location 의 rewrite 명령 과 일치 합 니 다. 만약 에 URI 가 재 작성 되면 1 - 3 을 다시 반복 해서 실행 합 니 다. 실제 존재 하 는 파일 을 찾 을 때 까지.10 회 이상 순환 하면 500 내부 서버 오류 로 돌아 갑 니 다.
이번 실천 에 서 는 dt 의 프로젝트 방문 을 모두 OCC 로 가 리 켜 야 합 니 다.DATACO_WEB 프로젝트 안 으로 들 어가 기 때문에 location 에 proxy 만 추가 해 야 합 니 다.패스 는 부족 합 니 다. rewrite 가 필요 합 니 다.

좋은 웹페이지 즐겨찾기