Serving XHTML as HTML to MSIE browsers in NginX

elliottcable nginx-forum at nginx.us
Mon Apr 6 13:48:06 MSD 2009


Maxim Dounin Wrote:
-------------------------------------------------------
> Hello!
> 
> On Mon, Apr 06, 2009 at 03:39:13AM -0400,
> elliottcable wrote:
> 
> > Okay, I talked to the nice people in the #NginX
> IRC room a bit (thanks "merlincorey" and "Damn"!).
> From a more careful reading of the NginX wiki's
> documentation, it appears that this should be
> legal:
> > 
> >
> http://github.com/elliottcable/server-configuratio
> n/blob/ad48f0b73ea8e2d33fc97bba60ddad2a4abca064/ng
> inx/includes.conf#L7-12
> > 
> > Here's the reasoning. The wiki declares that the
> `types {}` declaration is legal within a `location
> /…/ {}` declaration: http://tr.im/ijbz?nginx -
> it also declares that the inside of an `if () {}`
> declaration should inherit context from outside
> the `if`: http://tr.im/ijbK?nginx (to quote,
> "Configuration inside directive if is inherited
> from the previous level."). Therefore, having a
> `types` declaration inside an `if` inside a
> `location` should be legal.
> 
> Directives allowed within if() blocks has context
> "if" or "if in 
> location" explicitly listed in their
> documentation.  Directives 
> types and default_type aren't allowed inside
> if's.
> 
> > Unfortunately. with the configuration file as
> linked above, I can't launch NginX; I get an
> "emergency" level error about syntax that kills it
> on launch.
> > 
> > Is this a bug, then? Or is the documentation
> wrong? In either case, what can I do to get my
> server fixed to (im)properly serve XHTML to MSIE?
> 
> Try something like this:
> 
>     location ~ \.xhtml$ {
>         error_page  405  = @html;
> 
>         if ($http_user_agent ~* MSIE) {
>             return  405;
>         }
>     }
> 
>     location @html {
>         types  {};
>         default_type  text/html;
>     }
> 
> Maxim Dounin
> 
> > 
> > Posted at Nginx Forum:
> http://forum.nginx.org/read.php?2,839,842#msg-842
> > 
> >

That seems like … a horrid hack. Is there seriously no better way around this?

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,839,846#msg-846






More information about the nginx mailing list