我希望 nginx 根据请求的域设置适当的接受语言标头:
www.domain.ru 设置ru-RU
www.domain.com 设置en-US
www.domain.de 设置de-DE
www.domain.eu 什么都不做,让 Django 从浏览器获取标题。对于上面指定的 3 个域,即使英语用户输入 www.domain.ru(强制它使用俄语),也会强制更改接受语言标头。
这是我的 nginx 配置:
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 运行 Django)。accept-language
如果未设置会话语言,Django 会检查标头。