Wrong mime type for xml feed?

Igor Sysoev is at rambler-co.ru
Wed Sep 27 00:40:35 MSD 2006


On Tue, 26 Sep 2006, Ezra Zygmuntowicz wrote:

> On Sep 26, 2006, at 1:18 PM, Igor Sysoev wrote:
>> As I understand from your configuration, "/feed/atom.xml" may be handled
>> by backend. And that request is really handled by backend: nginx never
>> set the "ETag" header line, so the "Content-Type: text/plain" is set by
>> backend too. nginx does not change the "Content-Type", so you need 
>> configure
>> it on backend.
>> 
>> 
>> Igor Sysoev
>> http://sysoev.ru/en/
>> 
>
>
> 	THanks for looking at it. I think its a bit more complex then that. 
> The atom feed is served by a rails backend but is then cached on diskl and 
> served by nginx until it gets expired again. Standard rails page caching 
> setup. So when there is no file cached on disk yet, the first hit to the url 
> gives this header:
>
> rick at ricks-computer:~% curl -I http://mephistoblog.com/2006/8/31/how- 
> s-immortus-treating-you/changes.xml
> HTTP/1.1 200 OK
> Server: nginx/0.4.0
> Date: Tue, 26 Sep 2006 20:26:28 GMT
> Content-Type: application/xml
> Connection: keep-alive
> Status: 200 OK
> Cache-Control: no-cache
> Content-Length: 0
>
> You can see the correct content type is being set here.
>
>
> 	Now after that first hit, rails wrote the changes.xml file onto disk 
> and the rewrite rules are set to serve static content first if it is present. 
> So the second request to the same url gives a different header. And I 
> double-checked the nginx log and rails log and this second request is 
> definitely being served by nginx and not rails.
>
> rick at ricks-computer:~% curl -I http://mephistoblog.com/2006/8/31/how- 
> s-immortus-treating-you/changes.xml
> HTTP/1.1 200 OK
> Server: nginx/0.4.0
> Date: Tue, 26 Sep 2006 20:26:32 GMT
> Content-Type: text/plain; charset=ISO-8859-1
> Connection: keep-alive
> ETag: "45198cf4-12b7-743e4"
> Last-Modified: Tue, 26 Sep 2006 20:26:28 GMT
> Content-Length: 4791
>
>
> 	I really appreciate your help. Can you see what the issue is?

It's strange, nginx can not set ETag.
You can build nginx --with-debug, then add to nginx.conf:

error_log   /path/to/log  debug;

or

error_log   /path/to/log;

events {
    debug_connection  192.168.1.1;
    debug_connection  192.168.1.0/24;

Using debug_connection you can debug only some addresses.


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





More information about the nginx mailing list