Setting variable and using HttpSubModule

Jim Ohlstein jim at ohlste.in
Sat Jun 25 20:39:19 MSD 2011


I'm trying to insert google analytics code into an app by using the
directions at http://wiki.nginx.org/HttpSubModule.

In so doing, I first tried to set a variable as follows:

set $analytics = "var _gaq = _gaq || [];  _gaq.push(['_setAccount',
'UA-xxxxxx-xx']);   _gaq.push(['_trackPageview']);  (function() {    var
ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;    ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';    var s
= document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);  })();";

to get the text into the variable but of course that generates an error:

nginx: [emerg] invalid number of arguments in "set" directive in
/usr/local/etc/nginx/sites-enabled/mysite.com:12.

Searching Google I found a few threads about trying to place the
contents of a file into a variable but there didn't seem to be a way.

I also tried simply adding the text into the "sub_filter" line but that
also threw an error:

nginx: [emerg] unexpected "_" in
/usr/local/etc/nginx/sites-enabled/mysite.com:16

Using the following:

server {
  ...

  sub_filter      </head>
  '</head><script language="javascript" src=/home/jim/ga.js></script>';
  sub_filter_once on;

  ...
}

resulted in the following:

jim$ curl http://mysite.com/somepage

...
</head><script language="javascript" src=/home/jim/ga.js></script>
...

Putting the path in quotes changed nothing other than that portion being
in quotes.

Obviously I'm doing something wrong. Any help would be appreciated.
-- 
Jim Ohlstein



More information about the nginx mailing list