If-Modified-Since для статического html

Dmitriy Loskutov nginx-forum at nginx.us
Wed Oct 3 10:09:27 UTC 2012


Генерирую фоновым процессом (из cron, НЕ из php-fpm) статический html. Есть
также статический JS, обычный, созданный в vim.

Для js If-Modified-Since работает, для статического html - нет.

Вот конфиг (уже слегка замученный в целях отладки):


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
error_log  logs/error.log info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request"
'
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

        server {
                listen          78.24.217.105:80;
                server_name     poisk-znakomstv.ru;
                root            /var/www/lpsearch/site;
                charset utf-8;
                if_modified_since exact;

                location ~ \.php$ { deny all; }
                location /maintenance/ { deny all; }
                location /xml/ { deny all; }
                location ~ ^\.git { deny all; }
                location ~ ^/$ {
                        include fastcgi_params;
                        fastcgi_param  SCRIPT_FILENAME   
$document_root/index.php;
                        fastcgi_pass 127.0.0.1:9000;
                }
                location / {
                        try_files $uri $uri/ @proxy;
                }
                location /users/ {
                        root /var/www/lpsearch/site;
                }
                location @proxy {
                        include fastcgi_params;
                        fastcgi_param  SCRIPT_FILENAME   
$document_root/index.php;
                        fastcgi_pass 127.0.0.1:9000;
                }

                include deny_htaccess.conf;
        }

}

Вот реальные примеры выдачи из telnet:

GET /userlist/page1.html HTTP/1.0
Host: poisk-znakomstv.ru
If-Modified-Since: Wed, 03 Oct 2012 09:51:30 GMT

HTTP/1.1 200 OK
Server: nginx/1.2.3
Date: Wed, 03 Oct 2012 09:57:38 GMT
Content-Type: text/html; charset=utf-8
Connection: close
X-Powered-By: PHP/5.4.5

Но при этом:
GET /client/main.js HTTP/1.0
Host: poisk-znakomstv.ru
If-Modified-Since: Wed, 03 Oct 2012 07:51:36 GMT

HTTP/1.1 200 OK
Server: nginx/1.2.3
Date: Wed, 03 Oct 2012 09:58:05 GMT
Content-Type: application/x-javascript; charset=utf-8
Content-Length: 12096
Last-Modified: Wed, 03 Oct 2012 06:51:36 GMT
Connection: close
Accept-Ranges: bytes

Что у меня в правилах неправильно? Как сделать чтобы не было перенаправления
статического html на php-fpm ?

fastcgi_params и deny_htaccess.conf не содержат ничего касательно
перенаправления html на php-fpm.

freebsd,  nginx -v
nginx version: nginx/1.2.3

В access.log только строка
[03/Oct/2012:14:03:04 +0400] "GET /userlist/page1.html HTTP/1.0" 200 46134
"-" "-" "-"

Ошибки в error.log нет. Статические файлы есть:
ls -l /var/www/lpsearch/site/users/page1.html
-rw-r--r--  1 www  www  46135 Jan  1  2012
/var/www/lpsearch/site/users/page1.html
ls -l /var/www/lpsearch/site/client/main.js
-rw-r--r--  1 www  www  12096 Oct  3 10:51
/var/www/lpsearch/site/client/main.js

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,231349,231349#msg-231349



Подробная информация о списке рассылки nginx-ru