nginx conf 설정 문제
PHP中文网
PHP中文网 2017-05-16 17:29:03
0
2
703

1

http {} 섹션에서

를 설정합니다. 으아아아

요청한 헤더가

로 설정되었습니다. 으아아아

그런 다음 서버 {} 섹션에서

으아아아

세 번째 맵 명령이 이전 값을 덮어쓰기 때문에 인쇄된 결과는 항상 30입니다.

질문: 지도 부분의 다양한 헤더를 기반으로 원하는 값을 얻는 방법은 무엇입니까?

2

1번 문제를 해결하기 위한 제 생각은

으아아아

그런 다음 위치 {} 부분에서

를 사용하세요. 으아아아

원하는 값을 얻으려면; 부끄럽게도 이 if는 성공하지 못한 것 같으며 nginx에서는 if 사용을 권장하지 않습니다


그렇다면 숨겨진 장점과 명성을 지닌 동급생 중 누가 질문에 답하는 데 도움을 줄 수 있을까요?

PHP中文网
PHP中文网

认证0级讲师

모든 응답(2)
阿神

좋아요. if로 해봤는데 nginx에서는 if 사용을 권장하지 않습니다. 더 나은 솔루션이 있나요?


@冰风 그 분, 답장을 보낼 텍스트가 md 형식을 사용할 수 없는 것 같아서 여기로 답장하겠습니다:

감사합니다. 그러나 귀하의 답변은 제 질문에 대한 답변이 아닙니다.

내 비즈니스 요구사항은 다음과 같습니다.

으아악

즉, 요청에는 $http

header

1, $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/ 최종 $route는 212이고 fastcgi_pass localhost:212
  1. 最终$route为 111, 并 fastcgi_pass localhost:111
  2. curl -H "header_python:b" http://biz.domain.com/ 最终$route为 212, 并 fastcgi_pass localhost:212
  3. curl -H "header_ruby:c" http://biz.domain.com/ 最终$route为 313, 并 fastcgi_pass localhost:313curl -H "header_ruby:c" http://biz.domain.com/ 최종 $route는 313이고 fastcgi_pass localhost:313

그럼

  1. php-1 모니터 111, php-2 모니터 112, php-3 모니터 113
  2. python-1 모니터 211, python-2 모니터 212, python-3 모니터 213
  3. ruby-1은 311을 듣고, ruby-2는 312를 듣고, ruby-3은 313을 듣습니다.

결국 각각 포트를 수신하는 총 9개의 비즈니스 프로세스가 있습니다.

왜 이렇게 이상한 요구를 하는지 묻지 마세요. 그게 제 숨은 장점이자 명성이니까요~~~


그래서, 당신의 대답은 내 동물적인 욕구를 충족시킬 수 없습니다

漂亮男人

호스트는 몇 가지 사항을 이해해야 합니다. 1. 맵 명령어의 문은 기본적으로 N 중 1개를 실행해야 합니다.

으아아아

와 동일합니다. 으아아아

그래서 최종 나가는 $route는 30입니다.

map은 여러 들어오는 값과 나가는 값 사이의 매핑 관계를 설정하기 위한 명령입니다. 들어오는 값을 맵에 전달하기 전에 정의하고 할당하는 것이 가장 좋습니다. 그렇지 않으면 기본값이 직접 실행됩니다.

원본 포스터를 사용해 보세요

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿