HTTP directory redirect not using $host

Igor Sysoev is at rambler-co.ru
Thu Sep 21 19:43:43 MSD 2006


On Tue, 19 Sep 2006, Bob Ippolito wrote:

> On 9/19/06, Igor Sysoev <is at rambler-co.ru> wrote:
>> On Tue, 19 Sep 2006, Bob Ippolito wrote:
>> 
>> > It seems that the redirection from http://example.com/somedir to
>> > http://example.com/somedir/ does a 302 using the local hostname rather
>> > than the Host header.
>> >
>> > I was able to work around the issue using rewrite:
>> > if (-d $request_filename) { rewrite ^(.*[^/])$ http://$host$1/; }
>> >
>> > It would be nice if this was fixed in a future release. I looked
>> > around in the source for a bit, but I wasn't able to find exactly what
>> > needs to be changed.
>> 
>> Had you set "server_name" ?
>> 
>>      server {
>>          server_name   example.com www.example.com;
>>          ...
>>      }
>> 
>>      server {
>>          server_name   example1.com www.example1.com;
>>          ...
>>      }
>> 
>> nginx uses first name of the "server_name" directive in redirect.
>> If server_name is not set, then it uses local hostname.
>
> In this case, I did not set any server_name. Why not use the Host
> header always, and default to server_name only if the client didn't
> send one? You should really have to explicitly redirect to a different
> host, the implicit redirections should simply work with the Host they
> were given by the client.

I was wrong, I've just changed wiki:

The basic name of server is used in an HTTP redirects, if no a "Host" header
was in client request or that header does not match any assigned server_name.


Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list