>  Q&A  >  본문

nginx conf 설정 문제

1

http {} 섹션에서

를 설정합니다. 으아아아

요청한 헤더가

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

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

으아아아

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

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

2

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

으아아아

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

를 사용하세요. 으아아아

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


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

PHP中文网PHP中文网2688일 전602

모든 응답(2)나는 대답할 것이다

  • 阿神

    阿神2017-05-16 17:31:03

    좋아요. 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개의 비즈니스 프로세스가 있습니다.

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


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

    회신하다
    0
  • 漂亮男人

    漂亮男人2017-05-16 17:31:03

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

    으아아아

    와 동일합니다. 으아아아

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

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

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

    으아아아

    회신하다
    0
  • 취소회신하다