Назад | Перейти на главную страницу

Nginx кеширует веб-страницы? Пользователи должны обновляться каждый раз, чтобы видеть обновления дома и статей.

у нас проблема с большинством наших серверов с Nginx + MySQL + PHP-FPM (и WordPress в качестве CMS): браузеры не показывают последние версии наших веб-страниц.

Я объясню это так:

Но еще хуже на одном из наших серверов, где некоторые пользователи должны очистить кеши в своих браузерах (например, Internet Explorer показывает серьезную проблему), а затем они могут увидеть новый дом с наконец опубликованными новыми статьями.

То же самое происходит, когда пользователь добавляет новый комментарий к сообщению: комментарий не отображается, пока он не обновит веб-страницу. Вроде все кешируется, но точно не знаю почему.

Я не использую никаких плагинов кеширования в wordpress в этих блогах, поэтому единственная причина, по которой это могло происходить, - это плохая конфигурация в Nginx.

По запросу, вот два «важных» файла:

/etc/nginx/nginx.conf


user www-data;
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  4096;
    use epoll;
    multi_accept on;
    accept_mutex_delay 50ms;
}

http {
    include       /etc/nginx/mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;
    expires max;
    server_tokens off;
    gzip  on;
    gzip_static on;
    gzip_proxied any;
    gzip_types text/plain text/css application/x-javascript text/xml text/javascript application/xml;
    gzip_vary  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

И /etc/nginx/sites-enabled/mysite.com

server {

            listen   80;
            server_name  mysite.com *.mysite.com;
            rewrite ^/(.*) http://www.mysite.com/$1 permanent;
           }


server {
              listen   80;
#             access_log  /var/www/mysite/log/access.log;
#             error_log      /var/www/mysite/log/error.log info;
              server_name     www.mysite.com;
              root /var/www/mysite/;

          location / {
              index index.php;
              try_files $uri $uri/ /index.php?q=$uri&$args;
              # if the requested file exists, return it immediately
              if (-f $request_filename) {
              break;
          }

          # all other requests go to WordPress
          if (!-e $request_filename) {
                rewrite . /index.php last;
           }
      }

## Images and static content is treated different
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
      access_log        off;
      expires           30d;
      root /var/www/mysite/;
    }


## Parse all .php file in the /var/www directory
    location ~ .php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   backend;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/mysite/$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     on;
        fastcgi_read_timeout 180;
    }


    ## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
    }
}

upstream backend {
              server 127.0.0.1:9000;
        }
}

Надеюсь, это поможет...

У тебя есть expires max; в твоем http раздел и это устанавливает Expires заголовок до 31 декабря 2037 г. 23:59:59 по Гринвичу, а Cache-Control max-age до 10 лет.

глобально у вас есть истекает макс; установить в вашем http {}

http://wiki.nginx.org/HttpHeadersModule

Вероятно, это то, что сообщает браузерам, что нет новых данных о загрузке страницы, если они не обновят ее.