Questions about proxy_cache and ssi

Hello list,

I hava a  nginx config  problem , Please help look !
I use proxy_cache and ssi.

nginx config :
ssi on;
ssi_silent_errors on;
ssi_types text/shtml;

proxy_temp_path /cache/proxy_temp;
proxy_cache_path /cache/proxy_cache levels=1:2 keys_zone=tmp_cache:2000m
inactive=10000d max_size=200G;
proxy_next_upstream error timeout invalid_header http_504 http_500
http_502 http_503;

example:
*
*
http://x.com/1.shtml:

hello world1 !

<\html>

    http://x.com/2.shtml:
    <html>
     hello world2 !
     <!--#include virtual="/include/foot.html"-->
    <\html>
     .......


     http://x.com/include/foot.html:
    <html>
     old, i am include info !
    <\html>

problem:
*
*
Edit this file: http://x.com/include/include/foot.html

new, i am include info !
<\html>

  I use ngx_cache_purge to clear the cache :

http://x.com/include/include/foot.html

  But do not take effect cache these pages :

  open http://x.com/1.shtml
  the content is :
    <html>
     hello world1 !
     old, i am include info !
    <\html>

  open http://x.com/2.shtml
  the content is :
    <html>
     hello world2 !
     old, i am include info !
    <\html>


  I have to clear the cache in order to take effect  :
  http://x.com/purge/1.shtml
  http://x.com/purge/2.shtml


  open http://x.com/1.shtml
  the content is :
    <html>
     hello world1 !
     new, i am include info !
    <\html>

  open http://x.com/2.shtml
  the content is :
    <html>
     hello world2 !
     new, i am include info !
    <\html>

If I have a lot shtml files ,Must be more clear the cache.
http://x.com/purge/1.shtml
http://x.com/purge/2.shtml
http://x.com/purge/3.shtml
http://x.com/purge/4.shtml
http://x.com/purge/5.shtml
http://x.com/purge/6.shtml

I just need to clear a cache: http://x.com/purge/include/foot.html ,
all
SHTML pages to take effect.
Is there a way to solve?

Thanks in advance :slight_smile:

Hell FoxBin,

can you please post your whole proxy_* - config?

since your footer.html gets included and displayed via 1/2/3.html, this
file
itself will
never get cached, thus never can be purged, because it becomes part of
the
output of 1/2/3.html.

“simple” caching is done based on URLs

regards,

mex

Posted at Nginx Forum:

hi,mex :

this is my nginx config:

user nobody;
worker_rlimit_nofile 65500;
worker_processes 8;
error_log logs/error.log;

events {
use epoll;
worker_connections 65500;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip off;
client_max_body_size 1g;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
index index.shtml index.html index.htm;

access_log  logs/access.log ;

proxy_temp_path /cache/proxy_temp;
proxy_cache_path /cache/proxy_cache levels=1:2 

keys_zone=tmp_cache:2000m
inactive=10000d max_size=200G;
proxy_next_upstream error timeout invalid_header http_504 http_500
http_502 http_503;

upstream backend {
    server 192.168.1.100;
    server 192.168.1.101;
    server 192.168.1.102 backup;

}

server {
        server_name www.x.com ;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://backend;
            proxy_cache tmp_cache;
            proxy_cache_key $host$uri;
            proxy_cache_valid 1000d;
        }

        location ~ /purge(/.*) {
            allow 192.168.1.254;
            deny all;
            proxy_cache_purge tmp_cache $host$1$is_args$args;
        }

}

shtml files:
www.x.com/1.shtml
www.x.com/2.shtml
www.x.com/3.shtml
www.x.com/4.shtml
www.x.com/5.shtml
www.x.com/6.shtml
…more

include files:
http://www.x.com/purge/include/foot.html old, i am include info
!

Edit this file: http://www.x.com/include/include/foot.html new,
i
am include info ! <\html>

I use ngx_cache_purge to clear the cache :
http://www.x.com/purge/include/foot.html

But do not take effect cache these pages :
open http://www.x.com/1.shtml
the content is :

old, i am include info ! <\html>

open http://www.x.com/2.shtml
the content is :

old, i am include info ! <\html>

I have to clear the cache in order to take effect :
http://www.x.com/purge/1.shtml
http://www.x.com/purge/2.shtml

open http://www.x.com/1.shtml
the content is :

hello world1 ! new, i am include info ! <\html>

open http://www.x.com/2.shtml
the content is :

hello world2 ! new, i am include info ! <\html>

If I have a lot shtml files ,Must be more clear the cache :frowning:
http://www.x.com/purge/1.shtml
http://www.x.com/purge/2.shtml
http://www.x.com/purge/3.shtml
http://www.x.com/purge/4.shtml
http://www.x.com/purge/5.shtml
http://www.x.com/purge/6.shtml
…more

I just need to clear a cache: http://x.com/purge/include/foot.html , all
SHTML pages to take effect.

Is there a way to solve?

Thanks in advance :slight_smile:

Posted at Nginx Forum:

hi,mex :

this is my nginx config:

user nobody;
worker_rlimit_nofile 65500;
worker_processes 8;
error_log logs/error.log;

events {
use epoll;
worker_connections 65500;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip off;
client_max_body_size 1g;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
index index.shtml index.html index.htm;

access_log  logs/access.log ;

proxy_temp_path /cache/proxy_temp;
proxy_cache_path /cache/proxy_cache levels=1:2 

keys_zone=tmp_cache:2000m
inactive=10000d max_size=200G;
proxy_next_upstream error timeout invalid_header http_504 http_500
http_502 http_503;

upstream backend {
    server 192.168.1.100;
    server 192.168.1.101;
    server 192.168.1.102 backup;

}

server {
        server_name www.x.com ;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://backend;
            proxy_cache tmp_cache;
            proxy_cache_key $host$uri;
            proxy_cache_valid 1000d;
        }

        location ~ /purge(/.*) {
            allow 192.168.1.254;
            deny all;
            proxy_cache_purge tmp_cache $host$1$is_args$args;
        }

}

shtml files:
www.x.com/1.shtml
www.x.com/2.shtml
www.x.com/3.shtml
www.x.com/4.shtml
www.x.com/5.shtml
www.x.com/6.shtml
…more

include files:
http://www.x.com/purge/include/foot.html old, i am include info
!

Edit this file: http://www.x.com/include/include/foot.html new,
i
am include info ! <\html>

I use ngx_cache_purge to clear the cache :
http://www.x.com/purge/include/foot.html

But do not take effect cache these pages :
open http://www.x.com/1.shtml
the content is :

old, i am include info ! <\html>

open http://www.x.com/2.shtml
the content is :

old, i am include info ! <\html>

I have to clear the cache in order to take effect :
http://www.x.com/purge/1.shtml
http://www.x.com/purge/2.shtml

open http://www.x.com/1.shtml
the content is :

hello world1 ! new, i am include info ! <\html>

open http://www.x.com/2.shtml
the content is :

hello world2 ! new, i am include info ! <\html>

If I have a lot shtml files ,Must be more clear the cache :frowning:
http://www.x.com/purge/1.shtml
http://www.x.com/purge/2.shtml
http://www.x.com/purge/3.shtml
http://www.x.com/purge/4.shtml
http://www.x.com/purge/5.shtml
http://www.x.com/purge/6.shtml
…more

I just need to clear a cache: http://x.com/purge/include/foot.html , all
SHTML pages to take effect.

Is there a way to solve?

Thanks in advance :slight_smile:

Posted at Nginx Forum:

hi,mex :

this is my nginx config:

user nobody;
worker_rlimit_nofile 65500;
worker_processes 8;
error_log logs/error.log;

events {
use epoll;
worker_connections 65500;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip off;
client_max_body_size 1g;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

ssi on;
ssi_silent_errors on;
ssi_types text/shtml;
index index.shtml index.html index.htm;

access_log  logs/access.log ;

proxy_temp_path /cache/proxy_temp;
proxy_cache_path /cache/proxy_cache levels=1:2 

keys_zone=tmp_cache:2000m
inactive=10000d max_size=200G;
proxy_next_upstream error timeout invalid_header http_504 http_500
http_502 http_503;

upstream backend {
    server 192.168.1.100;
    server 192.168.1.101;
    server 192.168.1.102 backup;

}

server {
        server_name www.x.com ;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://backend;
            proxy_cache tmp_cache;
            proxy_cache_key $host$uri;
            proxy_cache_valid 1000d;
        }

        location ~ /purge(/.*) {
            allow 192.168.1.254;
            deny all;
            proxy_cache_purge tmp_cache $host$1$is_args$args;
        }

}

shtml files:
www.x.com/1.shtml
www.x.com/2.shtml
www.x.com/3.shtml
www.x.com/4.shtml
www.x.com/5.shtml
www.x.com/6.shtml
…more

include files:
http://www.x.com/purge/include/foot.html old, i am include info
!

Edit this file: http://www.x.com/include/include/foot.html new,
i
am include info ! <\html>

I use ngx_cache_purge to clear the cache :
http://www.x.com/purge/include/foot.html

But do not take effect cache these pages :
open http://www.x.com/1.shtml
the content is :

old, i am include info ! <\html>

open http://www.x.com/2.shtml
the content is :

old, i am include info ! <\html>

I have to clear the cache in order to take effect :
http://www.x.com/purge/1.shtml
http://www.x.com/purge/2.shtml

open http://www.x.com/1.shtml
the content is :

hello world1 ! new, i am include info ! <\html>

open http://www.x.com/2.shtml
the content is :

hello world2 ! new, i am include info ! <\html>

If I have a lot shtml files ,Must be more clear the cache :frowning:
http://www.x.com/purge/1.shtml
http://www.x.com/purge/2.shtml
http://www.x.com/purge/3.shtml
http://www.x.com/purge/4.shtml
http://www.x.com/purge/5.shtml
http://www.x.com/purge/6.shtml
…more

I just need to clear a cache: http://x.com/purge/include/foot.html , all
SHTML pages to take effect.

Is there a way to solve?

Thanks in advance :slight_smile:

Posted at Nginx Forum: