http {} 섹션에서
를 설정합니다. 으아아아요청한 헤더가
로 설정되었습니다. 으아아아그런 다음 서버 {} 섹션에서
으아아아세 번째 맵 명령이 이전 값을 덮어쓰기 때문에 인쇄된 결과는 항상 30입니다.
질문: 지도 부분의 다양한 헤더를 기반으로 원하는 값을 얻는 방법은 무엇입니까?
1번 문제를 해결하기 위한 제 생각은
으아아아그런 다음 위치 {} 부분에서
를 사용하세요. 으아아아원하는 값을 얻으려면; 부끄럽게도 이 if는 성공하지 못한 것 같으며 nginx에서는 if 사용을 권장하지 않습니다
좋아요. if로 해봤는데 nginx에서는 if 사용을 권장하지 않습니다. 더 나은 솔루션이 있나요?
@冰风 그 분, 답장을 보낼 텍스트가 md 형식을 사용할 수 없는 것 같아서 여기로 답장하겠습니다:
내 비즈니스 요구사항은 다음과 같습니다.
으아악즉, 요청에는 $http
header1, $httpheader2, $httpheader3 중 하나만 있고 해당 값은 a, b, c 중 하나입니다. nginx는 헤더의 키를 결정하고 키에 해당하는 값을 기반으로 확인된 $route 값을 반환해야 합니다.
비즈니스 예시:curl -H "header_php:a" http://biz.domain.com/
최종 $route는 111이고 fastcgi_pass localhost:111
curl -H "header_python:b" http://biz.domain.com/-
- curl -H "header_python:b" http://biz.domain.com/
- curl -H "header_ruby:c" http://biz.domain.com/
최종 $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개의 비즈니스 프로세스가 있습니다.
왜 이렇게 이상한 요구를 하는지 묻지 마세요. 그게 제 숨은 장점이자 명성이니까요~~~
그래서, 당신의 대답은 내 동물적인 욕구를 충족시킬 수 없습니다
호스트는 몇 가지 사항을 이해해야 합니다. 1. 맵 명령어의 문은 기본적으로 N 중 1개를 실행해야 합니다.
으아아아는
와 동일합니다. 으아아아그래서 최종 나가는 $route는 30입니다.
map은 여러 들어오는 값과 나가는 값 사이의 매핑 관계를 설정하기 위한 명령입니다. 들어오는 값을 맵에 전달하기 전에 정의하고 할당하는 것이 가장 좋습니다. 그렇지 않으면 기본값이 직접 실행됩니다.
원본 포스터를 사용해 보세요
으아아아