trailing slash at end URL with nginx as a reverse proxy for multiple website
António P. P. Almeida
appa at perusio.net
Sun Nov 20 08:35:55 UTC 2011
On 20 Nov 2011 08h11 WET, nam.nh at nd24.net wrote:
> Hi,
>
> I'm running OpenIndiana 151a server then now I'd like to build the
> web service with nginx. Briefly, my scenario is: one central server
> installed a few website in virtual machines, and there is a
> different real machine that stores static contents. I want nginx in
> central server will be the reverse proxy (get idea from
> http://tumblr.intranation.com/post/766288369/using-nginx-reverse-proxy).
>
> For example, if someone open website a.com, it will be redirected to
> 10.0.0.2:8001, and if other go to b.com it will be redirected to
> 10.0.0.3:8001, etc ...
>
> server {
> listen 80;
> server_name a.com;
>
> location / {
> proxy_pass http://10.0.0.2:8001;
> proxy_redirect off;
> server_name_in_redirect off;
> }
> }
>
> Nginx works fine, but I don't know how to rewrite/redirect the URL
> looks like: http://a.com/something becomes http://a.com/something/
>
> If someone open the link http://a.com/something nginx can't serve it
> then return the error message that says
> "http://a.com:8001/something" unreachable.
>
> If you have any advice, please tell. It's highly appreciated.
If it's rewriting all the URIs so that they have a trailing slash then
try this:
1. At the http level:
map $request_uri $no_trailing_slash {
default 1;
~.*[^/]$ 0;
}
2. At the server level (vhost):
server {
listen 80;
server_name a.com;
location / {
if ($no_trailing_slash) {
return 302 $request_uri/;
}
proxy_pass http://10.0.0.2:8001;
proxy_redirect off;
server_name_in_redirect off;
}
}
--- appa
> Thanks,
More information about the nginx
mailing list