编写nginx服务器程序时,想要获取ngx_http_request_t->ngx_http_headers_in_t中的accept和accept_language,代码中引用这两个字段时,编译出错,提示变量未定义,这两个变量在ngx_http_headers_in_t结构体中使用宏NGX_HTTP_HEADERS包含,在nginx源码中搜索此宏发现代码量极少,且真个源码中没有地方开启此宏,所以根据nginx源码编译无法获取这两个变量。
研究后发现,需要从github下载模块nginx_accept_language_module,添加到nginx源码中进行编译
下载地址:
https://github.com/giom/nginx_accept_language_module
编译方式:
将源码包解压至本地目录,在configure的时候,添加上模块目录
$ ./configure --add-module=path/to/nginx_accept_language_module编译后,不仅可以使用accept、accept_language这两个值,还可以在配置文件中指定变量值,根据语言进行网页跳转。
用法:
set_from_accept_language $lang en ja pl;
`$lang` 变量的存储区域
`en ja pl` 网站支持的区域
如果中没有网站上支持的语言,将会设置网站支持语言列表的第一种语言即(en)
配置实例:
如果对不同的语言设置了不同的子域,可以通过如下配置实现:
server {
listen 80;
server_name your_domain.com;
set_from_accept_language $lang en ja zh;
rewrite ^/(.*) http://$lang.your_domain.com redirect;
} 参考:
https://www.nginx.com/resources/wiki/modules/accept_language/
https://github.com/giom/nginx_accept_language_module
版权声明:本文为lijinqi1987原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。