Inconsistent variable caching (in SSI or in nginScript)

Anton Yuzhaninov citrin at
Tue Oct 10 02:15:49 UTC 2017


I've encountered a bug (or unexpected and not well documented feature)
in SSI (ngx_http_ssi_module) or in nginScript (ngx_http_js_module).

If a variable, which set via js_set is used only in SSI it is not cached
and nginScript function called several times for one HTTP request.

If the same variable is used anywhere in a config file, then a variable
value is cached (for a request).

Test config:

js_include /home/citrin/w/nginx/random.js;

js_set $random_int randomInt;

server {
        listen 8081;

        location / {
                ssi on;
                ssi_types    text/plain;
                default_type text/plain;
                return 200 '<!--# echo var="random_int" -->\n<!--# echo
var="random_int" -->\n';

        location /unrelated {
                add_header X-rnd $random_int;

With a config above I see the same random number printed twice (as

But when an add_header directive is commented out I see two different
random numbers (and this change is not expected).

nginx version: nginx/1.12.1
nginx-module-njs 0.1.10

Best Regards,
Anton Yuzhaninov

More information about the nginx mailing list