Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How do you mix variables and strings together in a Nginx configuration file?

I have a configuration file that looks like this:

server {
        listen 80;
        root /var/www/comet;
        index index.htm;
        default_type text/plain;
        location /publish {
                push_stream_publisher admin;
                set $push_stream_channel_id             $arg_id;
        location /sub {
                push_stream_subscriber long-polling;
                set $callback "${arg_callback}({\"id\":~id~,\"data\":~text~});";
                push_stream_message_template   $callback;
                set $push_stream_channels_path "/channel1";

It's a push server and it's supposed to push a message to the client depending on what they pass to on the callback parameter.

I.e. If the user requests and a message comes to them, it should read call({"id":0, "data":"blah"});

The above code outputs the literal variable name

tangrs@~ $ curl "" -D - && echo
HTTP/1.1 200 OK
Server: nginx/1.0.11
Date: Thu, 12 Jan 2012 04:55:38 GMT
Content-Type: text/plain
Last-Modified: Thu, 12 Jan 2012 04:55:38 GMT
Connection: close
Transfer-Encoding: chunked
Etag: 0


Does anyone know how to concat strings in Nginx config files?

share|improve this question
Sounds like a good recipe for cross-site scripting. Anyway, treating a web server configuration file as if it were a programming language doesn't tend to end in a happy result; I'd recommend using a real programming language generating dynamic content instead. – Shane Madden Jan 12 '12 at 5:09
It's a locally hosted project until I can get it working. I'm focused on getting it working before worrying about security. Thanks anyway though. – tangrs Jan 12 '12 at 5:17
Ok, fair enough - but again, with very few exceptions, configuration files are not programming languages. – Shane Madden Jan 12 '12 at 5:26
A word of advice from a recovering programmer: Worry about security NOW. Fixing a security disaster often requires a total rewrite. Doing it right from the beginning is always less effort. (Also, what @ShaneMadden said: Config files aren't programming languages. They should by and large be static entities, perhaps auto-generated, and dynamic aspects should be handled with Real Code™.) – voretaq7 Jan 12 '12 at 5:29

Store the string in another variable (say, $string) and do this:

set $callback $arg_callback$string;

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.