nginx conf로 if / else 문을 사용하는 방법은 무엇입니까?


9

nginx로 이와 같은 작업을 수행 할 수 있습니까?

if ( $http_user_agent = "wget" ){
   server {
      listen      11.11.11.11:1111;
      root        /website1/;
      server_name example.com www.example.com;
else 

   server {
      listen      22.22.22.22:22222;
      root        /website2/;
      server_name example2.com www.example2.com;
}

당신은 지도 모듈을 보고 싶을 수도 있습니다 .
gf_

2
당신은 뭔가 이상하고 의미없는 것을 썼습니다. 처음부터 시작해보십시오. 어떤 문제를 해결 하시겠습니까?
Alexey Ten

답변:


9

Nginx 재 작성 모듈에는 if지시문이 있지만 (예는 링크 된 문서 참조) 아닙니다 else. 등가에 대한이 else될 것 으로 수정되지 않습니다 모든 것을if .

if내부 는 사용할 수 server { }있지만 다른 방법으로 는 사용할 수 없습니다. 이미 서버가 필요한 요청 이전의 경우와 비교해도 조건이 없습니다. 거기에서 사용자 에이전트가 또는 그렇지 않은 경우에만 콘텐츠를 제공 할 수 있습니다 wget.

또한 원하는대로 작동하지 않을 수 있으므로 if내부 location에서 사용해서는 안됩니다 ( 악의 경우 참조 ).


3

주어진 형태로는 작동하지 않습니다. HTTP User-Agent 테스트는 요청이 이미 수신되었음을 암시합니다. 일부 server블록이 이미 정의 된 경우에만 가능합니다 . 다른 곳에서받은 요청의 User-Agent 문자열에 따라 새 서버를 시작 하시겠습니까?

다른 콘텐츠를 제공하려면 User-Agent와 같은 요청 부분에 따라 다른 경로 등으로 리디렉션하십시오 (예 : http://nginx.org/en/docs/http/ngx_http_rewrite_module). html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.