redirect based on file content

Dmitry Volyntsev xeioex at nginx.com
Mon Jul 16 18:09:32 UTC 2018


You can try to use njs here:

http://nginx.org/en/docs/http/ngx_http_js_module.html
http://nginx.org/en/docs/njs/njs_api.html#http - more about r object.

nginx.conf:
http {
	js_include http.njs;
	...
	server {
		listen 9000;
		location / {
			js_content redirect;
		}
	}
}

http.njs:
function redirect(r) {
  	var fs = require('fs');
  	var body = fs.readFileSync('/redirects/' + r.uri);
  	var parts = body.split(' ');
  	var code = Number(parts[0]);
  	var uri = parts[1];

  	r.return(code, uri);
}


On 16.07.2018 17:38, Torsten Curdt wrote:
> I want to have files in the filesystem that specify the response code 
> and redirect location instead of relying on the nginx configuration for it.
> 
> Imagine a file foo.ext looking like:
> 
>    301 https://some.host.com/foo.bla
> 
> On a GET of foo.ext it should result in a 301 to 
> https://some.host.com/foo.bla
> 
> So far I haven't found a module for this. I presume it should not be too 
> terribly hard to write a module for it but maybe I missed something? So 
> I thought I rather double check if there is an easier route.
> 
> Any thoughts?
> 
> cheers,
> Torsten
> 
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
> 


More information about the nginx mailing list