nginx-0.8.21
Igor Sysoev
is at rambler-co.ru
Tue Oct 27 00:33:06 MSK 2009
On Mon, Oct 26, 2009 at 08:45:46PM +0100, Steve wrote:
>
> -------- Original-Nachricht --------
> > Datum: Mon, 26 Oct 2009 21:53:59 +0300
> > Von: Igor Sysoev <is at rambler-co.ru>
> > An: nginx at sysoev.ru
> > Betreff: Re: nginx-0.8.21
>
> > On Mon, Oct 26, 2009 at 07:14:48PM +0100, Steve wrote:
> >
> > > > > 2009/10/26 16:36:12 [emerg] 31458#0: host not found in
> > "default_server"
> > > > of the "listen" directive in
> > > > /var/www/hosting/vhosts.conf.d/front/2000_domain.tld.conf:5
> > > > >
> > > > > What host does nginx have issue to find?
> > > >
> > > > Could you show the 5th line of the 2000_domain.tld.conf ?
> > > >
> > > 1 server {
> > > 2 #====================================================
> > > 3 set $vhost "domain.tld";
> > > 4 set $vhost_root "/var/www/vu-hosting/$vhost";
> > > 5 listen 80 default_server;
> > > 6 server_name www.domain.tld .domain.tld;
> > > 7 access_log /var/www/vu-hosting/domain.tld/logs/access_log
> > combined;
> > > 8 error_log /var/www/vu-hosting/domain.tld/logs/error_log;
> > > 9 root /var/www/vu-hosting/domain.tld/htdocs;
> >
> > Are you sure that it is this file ? This error message should be issued
> > for this:
> >
> > listen default_server;
> >
> I don't have that there. I have the 80 in front of default_server. The funny thing is that now I updated all the servers (backend as well) to 0.8.21 and the error is gone. And Firefox was right about the redirection error:
> alekto ~ # HEAD -H "Host:192.168.0.71" http://192.168.0.71/
> 301 Moved Permanently
> Connection: close
> Date: Mon, 26 Oct 2009 19:36:42 GMT
> Location: http://192.168.0.71/
> Server: nginx
> Content-Length: 178
> Content-Type: text/html
> Client-Date: Mon, 26 Oct 2009 19:36:42 GMT
> Client-Peer: 192.168.0.71:80
> Client-Response-Num: 1
> Client-Warning: Redirect loop detected (max_redirect = 7)
>
> alekto ~ #
>
>
> Looking again at the config file I detected a stupid error. I had this in place:
> 1 server {
> 2 #====================================================
> 3 set $vhost "domain.tld";
> 4 set $vhost_root "/var/www/vu-hosting/$vhost";
> 5 listen 80 default_server;
> 6 server_name www.domain.tld .domain.tld;
> 7 access_log /var/www/vu-hosting/domain.tld/logs/access_log combined;
> 8 error_log /var/www/vu-hosting/domain.tld/logs/error_log;
> 9 root /var/www/vu-hosting/domain.tld/htdocs;
> 10 #============================================
> 11 if ($host !~* "^(.*\.)?(domain\.tld)$") {
> 12 rewrite ^/(.*)$ http://$host/$1 permanent;
> 13 }
> 14 #============================================
>
>
> This produces a loop. Stupid me! Checking if $host is not equal to domain.tld and then rewriting the url to $host. Stupid! Stupid. The right config should be:
> 1 server {
> 2 #====================================================
> 3 set $vhost "domain.tld";
> 4 set $vhost_root "/var/www/vu-hosting/$vhost";
> 5 listen 80 default_server;
> 6 server_name www.domain.tld .domain.tld;
> 7 access_log /var/www/vu-hosting/domain.tld/logs/access_log combined;
> 8 error_log /var/www/vu-hosting/domain.tld/logs/error_log;
> 9 root /var/www/vu-hosting/domain.tld/htdocs;
> 10 #============================================
> 11 if ($host !~* "^(.*\.)?(domain\.tld)$") {
> 12 rewrite ^/(.*)$ http://www.$vhost/$1 permanent;
> 13 }
> 14 #============================================
The right config should be
server {
listen 80 default_server;
server_name _; # just nonexistant domain name
rewrite ^ http://www.domain.tld$request_uri? permanent;
}
server {
listen 80;
server_name .domain.tld;
# www.domain.tld is matched by .domain.tld;
...
}
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list