nginx 설정 의 proxy패스 신기!

2259 단어 LINUXnginx
proxy 모듈 은 nginx 에서 가장 토치카 모듈 중의 하나 이다.바로 proxy 모듈 이 있어 야 nginx 는 다른 http 서버 와 연결 되 고 nginx 의 가용성 을 크게 향상 시 킬 수 있 습 니 다.proxy 이 모듈 은 비교적 커서 명령 만 해도 한 무더기 가 있다.여기 서 우 리 는 단지 그것 의 가장 핵심 적 인 명령 인 proxy 를 간단하게 소개 할 뿐이다.pass 。
우리 가 크로스 필드 문제 에 부 딪 혔 고 클 라 이언 트 가 CORS 를 지원 할 수 없 을 때 가장 좋 은 방법 은 서버 로 하여 금 프 록 시 를 하 게 하 는 것 이다.전단 페이지 에 있 는 서버 nginx 설정 에 길 을 열 고 proxy 를 사용 하여 다른 도 메 인 이름 의 자원 을 요청 합 니 다.만약 에 크로스 도 메 인 자원 도 같은 기계 에 배치 되면 우 리 는 심지어 proxy 에서 127.0.0.1 까지 할 수 있다. 예 를 들 어:location /api { proxy_pass http://127.0.0.1:1234;}
클 라 이언 트 가 / api 라 는 경로 의 자원 을 요청 할 때 서버 는 127.0.0.1 의 1234 포트 에서 자원 을 찾 아 도 메 인 을 뛰 어 넘 는 문 제 를 해결 하 는 데 도움 을 줄 것 입 니 다.proxy_pass 는 현재 $uri 를 가 져 옵 니 다. 따라서 / api 라 는 경로 가 우리 가 임의로 추가 한 것 이 라면 대상 서비스 에 보 내기 전에 rewrite 를 사용 하여 이 불필요 한 경 로 를 처리 할 수 있 습 니 다. 예 를 들 어:location /api/ { rewrite ^/api/(.*) /$1 break; proxy_pass http://127.0.0.1:1234;}
rewrite 의 역할 은 $uri 를 수정 하 는 것 이지 만 rewrite 는 location 에 다시 일치 하 는 부작용 이 있어 야 합 니 다.proxy 때문에pass 의 처리 단 계 는 location 처리 보다 늦 기 때문에 rewrite 가 다음 location 에 들 어가 서 proxy 를 잃 어 버 리 지 않도록 break 해 야 합 니 다.pass。
또 주의해 야 할 점 이 있 습 니 다. proxypass 뒤의 host 가 도 메 인 이름 을 입력 하면 이 도 메 인 이름 은 nginx 가 시 작 될 때 분 석 됩 니 다.nginx 가 시 작 될 때 도 메 인 이름 을 분석 할 수 없 으 면 이상 을 던 져 서 시작 할 수 없습니다. 예 를 들 어:location /api { proxy_pass http://xxx;} nginx: [emerg] host not found in upstream "xxx"
또한 nginx 에서 도 메 인 이름 을 분석 하 는 것 은 시작 할 때 하 는 것 이기 때문에 nginx 가 시 작 된 후에 도 메 인 이름 을 수정 하 는 분석 은 nginx 에 적용 되 지 않 습 니 다.
nginx 를 시작 할 때 DNS 를 조회 하 라 는 것 이 믿 을 수 없다 고 생각한다 면 proxypass 시 어떤 IP 에 hostname 은 porxy 를 통과 할 수 있 습 니 다.set_header 명령 은 proxy HTTP 요청 의 Host 필드 를 강제로 설정 합 니 다. 예 를 들 어:location /api { proxy_set_header Host api.web-tinker.com; proxy_pass http://127.0.0.1:8080;}
Host 라 는 요청 헤드 를 설정 하 는 것 외 에 proxyset_header 는 또 다른 머리 를 설정 할 수 있 습 니 다. 당신 의 뇌 구멍 이 충분 하 다 면 그것 으로 더 이상 한 일 을 할 수 있 습 니 다!
그리고 주의해 야 할 점 이 있 습 니 다.proxy_pass 는 기본적으로 http 1.0 을 사용 합 니 다. proxy 를 통 해 사용 할 수 있 습 니 다.http_version 명령 은 http 1.1 을 사용 하여 keepalive 와 같은 기능 을 시작 할 수 있 도록 합 니 다.location /api { proxy_http_version 1.1; proxy_pass http://127.0.0.1:8080;}

좋은 웹페이지 즐겨찾기