From: Roman A. <rar...@gm...> - 2011-04-06 13:45:07
|
Hallo, I'm really new to yaws, so maybe there is a simple answer somewhere in man pages, but I can't find it, sorry. I try to set up an yaws+django environment, here is a part of my yaws.conf: <server localhost> port = 8081 listen = 127.0.0.1 appmods = </,mod_django> listen_backlog = 100 docroot = /home/rare/Projects/ts2dj/ts2/ fcgi_app_server = 127.0.0.1:3000 <opaque> static_paths = /static/ # we want to serv static files under /path/to/docroot/media/ from localhost:80/media/ </opaque> </server> and everything seems fine except of redirects. In django settings I have permanent redirect '/' => '/admin/', when I test in by curl I have: rare@rare-desktop ~ $ curl -I http://127.0.0.1:8081 HTTP/1.1 301 Moved Permanently Server: Yaws/1.89 Yet Another Web Server Location: http://127.0.0.1/admin/ Date: Wed, 06 Apr 2011 13:23:35 GMT Content-Type: text/html; charset=utf8 i.e. yaws redirects to wrong location :( For example, django development server send me: rare@rare-desktop ~ $ curl -I http://127.0.0.1:8000 HTTP/1.0 301 MOVED PERMANENTLY Content-Type: text/html; charset=utf8 Location: http://127.0.0.1:8000/admin/ Connection: close Server: Werkzeug/0.6.2 Python/2.6.5 Date: Wed, 06 Apr 2011 12:34:22 GMT and it works fine. With best wishes, Roman Arefiev |
From: Steve V. <vi...@ie...> - 2011-04-06 15:01:42
|
On Wed, Apr 6, 2011 at 9:34 AM, Roman Arefiev <rar...@gm...> wrote: > Hallo, > > I'm really new to yaws, so maybe there is a simple answer somewhere in > man pages, but I can't find it, sorry. > > I try to set up an yaws+django environment, here is a part of my yaws.conf: > > <server localhost> > port = 8081 > listen = 127.0.0.1 > appmods = </,mod_django> > listen_backlog = 100 > docroot = /home/rare/Projects/ts2dj/ts2/ > fcgi_app_server = 127.0.0.1:3000 > <opaque> > static_paths = /static/ # we want to serv static files > under /path/to/docroot/media/ from localhost:80/media/ > </opaque> > </server> > > and everything seems fine except of redirects. > > In django settings I have permanent redirect '/' => '/admin/', > > when I test in by curl I have: > > > rare@rare-desktop ~ $ curl -I http://127.0.0.1:8081 > HTTP/1.1 301 Moved Permanently > Server: Yaws/1.89 Yet Another Web Server > Location: http://127.0.0.1/admin/ > Date: Wed, 06 Apr 2011 13:23:35 GMT > Content-Type: text/html; charset=utf8 > > i.e. yaws redirects to wrong location :( Interesting -- looks like the port gets dropped from the URI in the Location header. I'll take a closer look and get back to you. thanks, --steve |
From: Steve V. <vi...@ie...> - 2011-04-18 13:17:04
|
On Wed, Apr 6, 2011 at 11:01 AM, Steve Vinoski <vi...@ie...> wrote: > On Wed, Apr 6, 2011 at 9:34 AM, Roman Arefiev <rar...@gm...> wrote: >> Hallo, >> >> I'm really new to yaws, so maybe there is a simple answer somewhere in >> man pages, but I can't find it, sorry. >> >> I try to set up an yaws+django environment, here is a part of my yaws.conf: >> >> <server localhost> >> port = 8081 >> listen = 127.0.0.1 >> appmods = </,mod_django> >> listen_backlog = 100 >> docroot = /home/rare/Projects/ts2dj/ts2/ >> fcgi_app_server = 127.0.0.1:3000 >> <opaque> >> static_paths = /static/ # we want to serv static files >> under /path/to/docroot/media/ from localhost:80/media/ >> </opaque> >> </server> >> >> and everything seems fine except of redirects. >> >> In django settings I have permanent redirect '/' => '/admin/', >> >> when I test in by curl I have: >> >> >> rare@rare-desktop ~ $ curl -I http://127.0.0.1:8081 >> HTTP/1.1 301 Moved Permanently >> Server: Yaws/1.89 Yet Another Web Server >> Location: http://127.0.0.1/admin/ >> Date: Wed, 06 Apr 2011 13:23:35 GMT >> Content-Type: text/html; charset=utf8 >> >> i.e. yaws redirects to wrong location :( > > Interesting -- looks like the port gets dropped from the URI in the > Location header. I'll take a closer look and get back to you. Just following up for the benefit of the list. After some experimentation I couldn't find anything wrong but Roman found that the Yaws setting for HTTP_HOST didn't include port information. According to draft RFC 3875 for CGI (not a real standard, but as close as it gets for CGI I guess), HTTP_HOST should be the value of the HTTP Host header, but Yaws was setting it to only the hostname. I emailed Roman a patch and he verified the fix, which I'll be pushing to github shortly. Many thanks to Roman for tracking down the root cause. --steve |