1 votos

Nginx cache-control / expiran los encabezados no sólo el trabajo

He buscado por todas partes una respuesta a este problema, pero ninguna de las respuestas parecen funcionar. Yo también estoy triste por el super post largo pero necesito pedir ayuda en esto. He tratado de ser lo más detallada posible.

Tengo una nginx servidor web con ngx_pagespeed instalado en CentOS 7 he construido desde la fuente y para la vida de mí, yo no puedo ir cache-control o expire de los encabezados de trabajo. He buscado y probado todo sugirió que la "solución" de aquí, de StackOverflow, el nginx wiki, y he visto probablemente de 50 diferentes páginas de las diferentes maneras en que las personas han conseguido el suyo "trabajo".

Ahora sé que ngx_pagespeed tiene su propio almacenamiento en caché, pero mi sitio no parece ser que se benefician de eso. Así que estoy tratando de establecer mi propio cache-control y expire encabezados por los medios de comunicación (jpg, gif, etc). Pero, durante los últimos 2 días, todo lo que me sale es:

Salida de curl -I

HTTP/2 200
server: nginx
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
strict-transport-security: max-age=31536000
x-content-type-options: nosniff
date: Tue, 26 Jun 2018 02:02:46 GMT
x-page-speed: Powered By ngx_pagespeed
cache-control: max-age=0, no-cache

Estoy tan frustrado por esto. No importa lo que intente, no puedo otra cosa que

cache-control: max-age=0, no-cache desde el rizo.

A continuación son mis archivos de configuración. Mi sitio config se encuentra en /etc/nginx/sites-available/conf y el archivo de configuración de nginx es en /etc/nginx/nginx.conf.

nginx.conf:

user  centos;
worker_processes  1;


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

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    include /etc/nginx/sites-enabled/*;
    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       80;
        server_name  localhost;
    }

No creo que el resto de nginx.conf es relevante. Todo comentario de todos modos por defecto. Este archivo puede ser todo tipo de mal. He intentado añadir cosas aquí que me encontré con que "fija" para otras personas.

sitio.conf

# don't send the nginx version number in error pages and Server header
server_tokens off;

server {
    listen 80;
    server_name my_site;
    return 301 https://www.my_site.org;

    root /home/centos/site_folder/public;

    location / {
    add_header Cache-Control "public";
    expires 1d;
    proxy_pass http://site_ip:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;

    #proxy_buffering on;
    #proxy_ignore_headers "Set-Cookie";
    #proxy_hide_header "Set-Cookie";

    proxy_buffering on;
    #proxy_ignore_headers Expires;
    #proxy_ignore_headers X-Accel-Expires;
    #proxy_ignore_headers Cache-Control;
    #proxy_ignore_headers Set-Cookie;

    #proxy_hide_header X-Accel-Expires;
    #proxy_hide_header Expires;
    #proxy_hide_header Cache-Control;
    #proxy_hide_header Pragma;

    }

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 15d;
    }


    location ~* \.(jpg|jpeg|gif|png)$ {
    expires 365d;
    }

    location ~* \.(pdf|css|html|js|swf)$ {
    expires 30d;
    }

}


server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /my/certs/are/here.crt;
ssl_certificate_key /my/certs/are/here.key;

# intermediate configuration
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

# enable session resumption to improve https performance
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate         
    /my/certs/are/here.crt;

    gzip on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    gzip_proxied any;
    gzip_types text/plain text/css application/json         
    application/javascript application/x-javascript text/xml 
    application/xml application/xml+rss text/javascript image/x- 
    icon image/bmp image/svg+xml;
    gzip_vary on;
    gzip_comp_level 5;
    gzip_min_length 256;
    gzip_buffers 16 8k;

    include /etc/nginx/snippets/security-headers.conf;

    server_name my_site.org;
    access_log /var/log/nginx/nginx.vhost.access.log;
    error_log /var/log/nginx/nginx.vhost.error.log;
    location / {
    #root /home/centos/my_site.org/public;
    try_files $uri $uri/ /index.html?$args;
    index index.html;

    }

    location ~*\.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
    }

    location /page1 {
    default_type "text/html";
    alias /home/centos/my_site.org/public/page1.html;
    }

    location /page2 {
    default_type "text/html";
    alias /home/centos/my_site.org/public/page2.html;
    }

    location ~* \. 
    (jpeg|jpg|JPG|gif|png|ico|cur|gz|svg|svgz|webp)$ {
    #root /home/centos/my_site.org/public;
    #include /etc/nginx/snippets/security-headers.conf;
    try_files $uri $uri/ /$1/$2 =404;
    #access_log off;
    #log_not_found off;
    }

    #location ~* \.(mp3|mpeg|mpg|mp4|ogg|ogv|webm|webp|htc)$ {        
    #root /home/centos/my_site.org/public;
    #include /etc/nginx/snippets/security-headers.conf;
    #try_files $uri $uri/ /$1/$2 =404;
    #proxy_cache_valid any 30d;
    #access_log off;
    #add_header Cache-Control "public";
    #}

    #location ~* \.(|css|js)$ {
    #expires 7d;
    #root /home/centos/my_site.org/public;
    #include /etc/nginx/snippets/security-headers.conf;
    #try_files $uri $uri/ /$1/$2 =404;
    #access_log off;
    #add_header Cache-Control "public";
    #}  

    ##
    # Pagespeed main settings

    pagespeed on;
    pagespeed FileCachePath /var/ngx_pagespeed_cache;   
    pagespeed FileCacheSizeKb            102400;
    pagespeed FileCacheCleanIntervalMs   3600000;
    pagespeed FileCacheInodeLimit        500000;
    pagespeed Domain https://www.my_site.org;
    pagespeed XHeaderValue "Powered By ngx_pagespeed";
    pagespeed HonorCsp on;
    pagespeed LowercaseHtmlNames on;
    #pagespeed EnableFilters extend_cache;
    #pagespeed ModifyCachingHeaders off;

    # Image related
    pagespeed EnableFilters rewrite_images;
    pagespeed EnableFilters convert_gif_to_png;
    pagespeed EnableFilters convert_jpeg_to_progressive;
    pagespeed EnableFilters strip_image_color_profile;
    pagespeed EnableFilters strip_image_meta_data;
    pagespeed EnableFilters jpeg_subsampling;
    pagespeed EnableFilters lazyload_images;
    pagespeed EnableFilters responsive_images,resize_images;
    pagespeed EnableFilters resize_mobile_images;
    pagespeed EnableFilters recompress_images;

    # code related
    pagespeed EnableFilters collapse_whitespace;

    # JS related
    pagespeed EnableFilters rewrite_javascript;
    pagespeed EnableFilters combine_javascript;

    # CSS related
    pagespeed EnableFilters rewrite_css;
    pagespeed EnableFilters prioritize_critical_css;
    pagespeed EnableFilters combine_css;
    pagespeed EnableFilters outline_css;
    pagespeed EnableFilters flatten_css_imports;

    # Ensure requests for pagespeed optimized resources go to the         
    pagespeed
    # handler and no extraneous headers get set.

    location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" 
    { add_header "" ""; }

    #location ~* \.(jpg|jpeg|gif|png|js|css)$ {
    #add_header Cache-Control "public, max-age=600";
    #}      

    location ~ "^/ngx_pagespeed_static/" { }
    location ~ "^/ngx_pagespeed_beacon" { }

    }

Estas configuraciones de trabajo y aprobar nginx -t , pero el almacenamiento en caché simplemente no funciona. He dejado toda mi código comentado de modo que usted puede ver lo que he hecho y probado. Cualquier ayuda sería muy apreciada. Si he omitido alguna detalles necesarios, hágamelo saber. Gracias!

0voto

Grady Puntos 6

Con un poco de dirección de Tero Kilkanen, yo era capaz de establecer la cache-control y expires encabezado desde el S3 que los medios de comunicación está alojado en y no de mi nginx servidor web.

Gracias!

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: