2012-08-13 3 views
0

내가 nginx를 요청 도메인에 따라 적절한 동의 언어 헤더를 설정하고 싶은에 헤더 언어 동의 en-US www.domain.de 설정 de-DE매핑의 nginx (장고)와 도메인

www.domain.eu Django가 브라우저에서 헤더를 가져 오도록하지 마십시오. 위의 3 개 도메인에 대해 영어 사용자가 www.domain.ru (러시아어 사용을 강제)로 입력하면 accept-language 헤더도 변경됩니다 ( ).

server { 
listen 1.1.1.1; 
server_name domain.eu www.domain.eu domain.de www.domain.de domain.com www.domain.com domain.ru www.domain.ru; 
if($host ~* (.*)\.ru) { 
set $http_accept_language 'ru-RU'; 
} 
location/{ 
proxy_pass_header Server; 
proxy_set_header Host $http_host; 
proxy_redirect off; 
proxy_set_header X-Forwarded-For $remote_addr; 
proxy_set_header X-Scheme $scheme; 
proxy_connect_timeout 10; 
proxy_read_timeout 10; 
proxy_pass http://127.0.0.1:8888/; 
} 
} 

이 (gunicorn를 통해 장고를 실행) 내 설정의 일부입니다 :

여기 내의 nginx의 설정입니다. Django는 세션 언어가 설정되지 않은 경우 accept-language 헤더를 확인합니다.

답변

1

는 $에 http _.... 특별히 사용한 이름이 의미 아마 nginx를 자체 (에 의해 해석 및 설정 $ HTTP_로 시작하는 변수로 가장 좋은 생각이 아니다으로 변수를 설정

if ($host ~* \.ru$) { 
    set $language 'ru-RU'; 
} 
add_header Accept-Language $language; 

시도 'http 헤더의 내용'accept_language ' http://wiki.nginx.org/HttpCoreModule#Variables 참조). 나는 당신의 세트 또는 nginx가 이길 것인지는 확신 할 수 없지만 왜 불을 가지고 노는거야?

+0

내'location /'지시어와 코드에'proxy_set_header Accept-Language $ language;'를 추가하면 도움이됩니다. 감사! – Robert