accept-language: NGINX Accept-Language-Modul
Installation
Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:
- RedHat Enterprise Linux 7, 8, 9 und 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-accept-language
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-accept-language
Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:
load_module modules/ngx_http_accept_language_module.so;
Dieses Dokument beschreibt nginx-module-accept-language v1.0.0 veröffentlicht am 30. Oktober 2018.
Dieses Modul analysiert den Accept-Language-Header und gibt die am besten geeignete Locale für den Benutzer aus einer Liste unterstützter Locales Ihrer Website zurück.
Syntax
set_from_accept_language $lang en ja pl;
$langist die Variable, in der die Locale gespeichert wirden ja plsind die von Ihrer Website unterstützten Locales
Wenn keine der Locales aus Accept-Language auf Ihrer Website verfügbar ist, wird die Variable auf die erste Locale der unterstützten Locales Ihrer Website gesetzt (in diesem Fall en).
Warnung
Es wird derzeit davon ausgegangen, dass der Accept-Language nach Qualitätswerten sortiert ist (aus meinen Tests ist das der Fall für Safari, Firefox, Opera und IE) und q verworfen wird (siehe http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
In der Situation, in der ich das Modul verwende, funktioniert diese Annahme... aber Käufer seien gewarnt :-)
Beispielkonfiguration
Wenn Sie unterschiedliche Subdomains für jede Sprache haben
server {
listen 80;
server_name your_domain.com;
set_from_accept_language $lang en ja zh;
rewrite ^/(.*) http://$lang.your_domain.com redirect;
}
Oder Sie könnten etwas wie dies tun, um Personen, die zu '/' kommen, nach /en (oder /pt) weiterzuleiten:
location / {
set_from_accept_language $lang pt en;
if ( $request_uri ~ ^/$ ) {
rewrite ^/$ /$lang redirect;
break;
}
}
Warum habe ich es erstellt?
Ich verwende Page-Caching mit Merb auf einer mehrsprachigen Website und benötigte eine Möglichkeit, die richtige Sprachseite aus dem Cache bereitzustellen. Ich werde bald ein Beispiel auf http://gom-jabbar.org bereitstellen.
Anerkennung
Danke an Evan Miller für seinen Leitfaden zum Schreiben von NGINX-Modulen.
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-accept-language.