http {} 섹션에서
를 설정합니다. 으아아아요청한 헤더가
로 설정되었습니다. 으아아아그런 다음 서버 {} 섹션에서
으아아아세 번째 맵 명령이 이전 값을 덮어쓰기 때문에 인쇄된 결과는 항상 30입니다.
질문: 지도 부분의 다양한 헤더를 기반으로 원하는 값을 얻는 방법은 무엇입니까?
1번 문제를 해결하기 위한 제 생각은
으아아아그런 다음 위치 {} 부분에서
를 사용하세요. 으아아아원하는 값을 얻으려면; 부끄럽게도 이 if는 성공하지 못한 것 같으며 nginx에서는 if 사용을 권장하지 않습니다
阿神2017-05-16 17:31:03
좋아요. if로 해봤는데 nginx에서는 if 사용을 권장하지 않습니다. 더 나은 솔루션이 있나요?
내 비즈니스 요구사항은 다음과 같습니다.
으아악즉, 요청에는 $http
header1, $httpheader2, $httpheader3 중 하나만 있고 해당 값은 a, b, c 중 하나입니다. nginx는 헤더의 키를 결정하고 키에 해당하는 값을 기반으로 확인된 $route 값을 반환해야 합니다.
비즈니스 예시:
최종 $route는 111이고 fastcgi_pass localhost:111
최종 $route는 212이고 fastcgi_pass localhost:212
最终$route为 111, 并 fastcgi_pass localhost:111
最终$route为 212, 并 fastcgi_pass localhost:212
最终$route为 313, 并 fastcgi_pass localhost:313
curl -H "header_ruby:c" http://biz.domain.com/ 최종 $route는 313이고 fastcgi_pass localhost:313
결국 각각 포트를 수신하는 총 9개의 비즈니스 프로세스가 있습니다.
漂亮男人2017-05-16 17:31:03
호스트는 몇 가지 사항을 이해해야 합니다. 1. 맵 명령어의 문은 기본적으로 N 중 1개를 실행해야 합니다.
으아아아는
와 동일합니다. 으아아아그래서 최종 나가는 $route는 30입니다.
map은 여러 들어오는 값과 나가는 값 사이의 매핑 관계를 설정하기 위한 명령입니다. 들어오는 값을 맵에 전달하기 전에 정의하고 할당하는 것이 가장 좋습니다. 그렇지 않으면 기본값이 직접 실행됩니다.
원본 포스터를 사용해 보세요
으아아아