如何编写Nginx配置,实现根据浏览器中文语言将https跳转至http?
Nginx等效Apache HTTPS按中文语言跳转HTTP配置方案
你可以直接在你现有的server配置块中添加以下规则,即可实现和Apache配置完全一致的效果:
新增配置代码
# 匹配HTTPS请求且浏览器语言为中文时跳转到HTTP if ($https = 'on') { # ~* 代表不区分大小写匹配,等效Apache配置中的[NC]参数 if ($http_accept_language ~* ^zh) { return 301 http://$host$request_uri; } }
放置位置
将上述代码粘贴到你现有配置的#SSL-END注释下方即可,修改后的完整server块示例如下:
server { listen 80; listen 443 ssl http2; listen 88; server_name mysite.com www.mysite.com; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/mysite.com; #SSL-START SSL related configuration, do NOT delete or modify the next line of commented-out 404 rules #error_page 404/404.html; ssl_certificate /www/server/panel/vhost/cert/mysite.com/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/mysite.com/privkey.pem; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=0"; error_page 497 https://$host$request_uri; #SSL-END # 新增的跳转规则 if ($https = 'on') { if ($http_accept_language ~* ^zh) { return 301 http://$host$request_uri; } } ...... }
生效操作
配置修改完成后,先执行以下命令测试配置语法是否正确:nginx -t
提示syntax is ok后执行重载命令生效:nginx -s reload
内容的提问来源于stack exchange,提问作者scott_ease
相关产品推荐
相关产品推荐

