question on server_name_in_redirect

bai.xiaoyu at gmail.com bai.xiaoyu at gmail.com
Wed Aug 25 13:08:31 MSD 2010


 server {
         listen        80;
        server_name   example.com:7788 example.com;
        server_name_in_redirect on;
        root         /var/www/html/exampel/;
        index        index.php index.html;

According to the wiki, this should automatically redirect any request
to example.com to example.com:7788

If server_name_in_redirect is on, then Nginx will use the first value
of the server_name directive for redirects. If server_name_in_redirect
is off, then nginx will use the requested Host header.
http://wiki.nginx.org/NginxHttpCoreModule#server_name_in_redirect

But it didn't work in my case.  On nginx 0.8.44


So i had to use

if ($host ~* shop.2u4u.com.cn ) {
        rewrite ^(.*)$ http://shop.2u4u.com.cn:7788$1 ; # $1 contains
'/foo', not 'www.mydomain.com/foo'
        }

Which is not clean and fell in the category of nginx pitfall :(
http://wiki.nginx.org/Pitfalls



More information about the nginx mailing list