{{tag>nginx proxy}} ====== Example of redirect and rewrites ====== ===== Redirect root path ===== Redirect from example.com to example.com/it first then to some proxy app. This will preserve any URI after example.com, for example //example.com/images/image1.png// will become example.com/**it**/images/image1.png The option with using //return// directive is faster. upstream ups { server 127.0.0.1:3010 fail_timeout=10s max_fails=3; } server { listen 80; server_name example.com; access_log /var/log/nginx/ups_access.log; error_log /var/log/nginx/ups_error.log notice; location / { return 301 /it$request_uri; # alternative using rewrite # rewrite ^/?(.*?)$ http://$host/it/$1 break; # rewrite_log on; } location /it { proxy_pass http://ups; proxy_set_header Host $host; } } You can check the rewrite messages in specified error log. ===== Redirect based on browser's Accept-Language header that is sent ===== server conf: location / { return 301 /$lang/$request_uri; } location /it { proxy_pass http://ups; proxy_set_header Host $host; } location /en { proxy_pass http://127.0.0.1:3000/; proxy_set_header Host $host; } In http context add the mapping for ''$lang'', e.g. http { ... map $http_accept_language $lang { default en; ~it it; ~es es; ~fr fr; } ... } ===== Rewrite uppercase to lowercase ===== Install perl module first: apt install nginx-module-perl Enable it in //nginx.conf// near top of file, outside of any section load_module "modules/ngx_http_perl_module.so"; Create perl rewrite function inside //http// section: # Include the perl module perl_modules perl/lib; # rewrite function from upper to lowercase perl_set $uri_lowercase 'sub { my $r = shift; my $uri = $r->uri; $uri = lc($uri); return $uri; }'; Use it in site configuration, maybe put it at end of file to not interfere with other routes (test this for your own setup) # if the path contains uppercase characters, # rewrite to lowercase location ~ [A-Z] { rewrite ^(.*)$ $scheme://$host$uri_lowercase; } ====== Tested on ====== * Debian 11 * nginx/1.23.1 ====== See also ====== * [[wiki:nginx_troubleshooting|Nginx troubleshooting]] * [[wiki:redirect_another_site_query_parameter_nginx|Redirect to another site from query parameter in nginx]] ====== References ====== * https://stackoverflow.com/questions/35949123/nginx-rewrite-root-url-with-language-suffix * https://serverfault.com/questions/407028/nginx-rewrite-or-return-for-redirection