nginx 설정 의 proxy패스 신기!
우리 가 크로스 필드 문제 에 부 딪 혔 고 클 라 이언 트 가 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;}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
신호 및 신호 처리1. 신호 의 개념 신호 (signal) 는 소프트웨어 중단 으로 비동기 사건 을 처리 하 는 방법 을 제공 하고 시스템 자원 소모 가 가장 적은 프로 세 스 간 통신 방식 이다.리 눅 스에 서 모든 이상 퇴출 은 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.