While it works in most of the sites we host, we have found some weird exceptions.

I checked Purge server logs and it does look like this site sends wrongly formatted Purge/GET requests, it looks like below:

127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-normalfakta HTTP/1.1" 400 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-smartfakta HTTP/1.1" 400 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-otherfakta HTTP/1.1" 400 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-tabletfakta HTTP/1.1" 400 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-tabletnode/4611 HTTP/1.1" 400 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-normalnode/4611 HTTP/1.1" 400 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-smartnode/4611 HTTP/1.1" 400 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-othernode/4611 HTTP/1.1" 400 166 "-" "-"

While it should be:

127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-normal/fakta HTTP/1.1" 404 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-smart/fakta HTTP/1.1" 404 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-other/fakta HTTP/1.1" 404 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-tablet/fakta HTTP/1.1" 404 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-tablet/node/4611 HTTP/1.1" 404 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-normal/node/4611 HTTP/1.1" 404 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-smart/node/4611 HTTP/1.1" 404 166 "-" "-"
127.0.0.1 - - [14/Feb/2012:13:05:20 +0100] "GET /purge-mobile-other/node/4611 HTTP/1.1" 404 166 "-" "-"

The missing forward slash seems to be reason of Nginx Error 400 (because Nginx returns Error 400 when it receives GET with URI without the forward slash at the beginning.

However, after enabling more verbose error log in Nginx it says that the real reason is different:

2012/02/14 17:33:50 [info] 46097#0: *325844 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-normalfakta HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325850 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-mobile-smartnode/4611 HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325849 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-mobile-tabletnode/4611 HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325848 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-normalnode/4611 HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325847 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-mobile-otherfakta HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325846 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-mobile-smartfakta HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325845 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-mobile-tabletfakta HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325867 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-mobile-othernode/4616 HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325866 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-mobile-smartnode/4616 HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325865 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-mobile-tabletnode/4616 HTTP/1.1"
2012/02/14 17:33:50 [info] 46097#0: *325864 client sent HTTP/1.1 request without "Host" header while reading client request headers, client: 127.0.0.1, server: _, request: "GET /purge-normalnode/4616 HTTP/1.1"

So it looks like the Host header is missing.

Now, many other sites on the same server work just fine, so there must be something in its code/contrib module space which causes either Purge (or is it caused by Expire?) module to send wrongly formatted GET request - with missing slash and without Host header.

However, I don't see any suspicious module in the list of modules enabled in this site:

drush pml --status=enabled --no-core --type=module

 Package                           Navn                                                        Version        
 Administration                    Admin (admin)                                               6.x-1.0-beta3  
 Anden                             Advanced help (advanced_help)                               6.x-1.2        
 Anden                             Backup and Migrate (backup_migrate)                         6.x-2.4        
 Anden                             Better Formats (better_formats)                             6.x-1.2        
 Anden                             Block Class (block_class)                                   6.x-1.3        
 Anden                             CKEditor (ckeditor)                                         6.x-1.1        
 Anden                             Clone module (clone)                                        6.x-1.2        
 Anden                             Global Redirect (globalredirect)                            6.x-1.2        
 Anden                             Menu Block (menu_block)                                     6.x-2.3        
 Anden                             Multistepform (multistepform)                                              
 Anden                             Pathauto (pathauto)                                         6.x-1.3        
 Anden                             robots.txt (robotstxt)                                      6.x-1.x-dev    
 Anden                             Seven Up (sevenup)                                          6.x-0.3        
 Anden                             Token (token)                                               6.x-1.13       
 Caching                           Cache (cache)                                               6.x-1.x-dev    
 CCK                               Content (content)                                           6.x-2.6        
 CCK                               Content Copy (content_copy)                                 6.x-2.6        
 CCK                               Custom Formatters (custom_formatters)                       6.x-1.4        
 CCK                               Email (email)                                               6.x-1.2        
 CCK                               Fieldgroup (fieldgroup)                                     6.x-2.6        
 CCK                               FileField (filefield)                                       6.x-3.3        
 CCK                               FileField Nginx Progress (filefield_nginx_progress)         6.x-1.4        
 CCK                               ImageField (imagefield)                                     6.x-3.3        
 CCK                               Link (link)                                                 6.x-2.8        
 CCK                               Node Reference (nodereference)                              6.x-2.6        
 CCK                               Number (number)                                             6.x-2.6        
 CCK                               Option Widgets (optionwidgets)                              6.x-2.6        
 CCK                               Text (text)                                                 6.x-2.6        
 Date/Time                         Date (date)                                                 6.x-2.4        
 Date/Time                         Date API (date_api)                                         6.x-2.4        
 Date/Time                         Date Timezone (date_timezone)                               6.x-2.4        
 Date/Time                         Date Tools (date_tools)                                     6.x-2.4        
 Development                       Node import (node_import)                                   6.x-1.0-rc4    
 Display suite                     Display suite (ds)                                          6.x-1.2        
 Display suite                     Display suite UI (ds_ui)                                    6.x-1.2        
 Display suite                     ND CCK (nd_cck)                                             6.x-2.2        
 Display suite                     Node displays (nd)                                          6.x-2.2        
 ImageCache                        ImageAPI (imageapi)                                         6.x-1.8        
 ImageCache                        ImageAPI GD2 (imageapi_gd)                                  6.x-1.8        
 ImageCache                        ImageCache (imagecache)                                     6.x-2.0-beta10 
 ImageCache                        ImageCache UI (imagecache_ui)                               6.x-2.0-beta10 
 Mail                              Mime Mail (mimemail)                                        6.x-1.0-alpha7 
 Other                             Featured Content (featured_content)                         6.x-1.0-beta4  
 Performance and scalability       Cache Expiration (expire)                                                  
 Performance and scalability       DB Tuner (dbtuner)                                          6.x-1.x-dev    
 Performance and scalability       Purge (purge)                                                              
 Pressflow                         Path alias cache (path_alias_cache)                                        
 Printer, e-mail and PDF versions  Printer-friendly pages (print)                              6.x-1.10       
 Statistics                        Google Analytics (googleanalytics)                          6.x-2.2        
 User interface                    External Links (extlink)                                    6.x-1.11       
 Views                             Views (views)                                               6.x-2.10       
 Views                             Views Custom Field (views_customfield)                      6.x-1.0        
 Views                             Views GroupBy (views_groupby)                               6.x-1.0-rc2    
 Views                             Views PHP (views_php)                                       6.x-1.x-dev    
 Views                             Views Slideshow (views_slideshow)                           6.x-2.1        
 Views                             Views Slideshow: SingleFrame (views_slideshow_singleframe)  6.x-2.1        
 Views                             Views Table Highlighter (views_table_highlighter)           6.x-1.1        
 Views                             Views UI (views_ui)                                         6.x-2.10       

Any ideas?

Comments

SqyD’s picture

Hi omega8cc,

I just committed some changes to the purging logic for the GET method that could change your situation. Could you test again please?

SqyD’s picture

Status: Active » Closed (cannot reproduce)

I believe this was fixed some time ago.... reopen if you don't agree.