Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I use Clojure with nginx?

Tags:

nginx

clojure

This is a follow up to my question here. I've set up a home server (just my other laptop running ubuntu and nginx) and I want to serve clojure files.

I am asking help for understanding how this process works. I am sorry at this point I am confused and I think I need to start over. I am asking a new question because I want to use nginx not lein ring server, as suggested in the answer for that question.

First I started a project guestbook with leiningen and I ran lein ring server and I see "Hello World" at localhost:3000. As far as I understand this has nothing to do with nginx!

How does nginx enter in this process? At first I was trying to create a proxy server with nginx and that worked too, but I did not know how serve clojure files with that setup.

This is what I have in my nginx.conf file adapted from this answer:

 upstream ring {
    server 127.0.0.1:3000 fail_timeout=0;
}

server {
    root /home/a/guestbook/resources/public;

    # make site accessible from http://localhost
    server_name localhost;

    location / {
        # first attempt to serve request as file
        try_files $uri $uri/ @ring;
    }

    location @ring {
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header Host $http_host;
        proxy_pass http://ring;
    }

    location ~ ^(assets|images|javascript|stylesheets|system)/ {
        expires    max;
        add_header Cache-Control public;
    }
}

So I want to use my domain example.com (not localhost); how do I go about doing this?


EDIT

As per @noisesmith's comment I will opt to go with lein uberjar option. As explained here, it appears very easy to create one:

$ lein uberjar
Unpacking clojure-1.1.0-alpha-20091113.120145-2.jar
Unpacking clojure-contrib-1.0-20091114.050149-13.jar
Compiling helloworld
      [jar] Building jar: helloworld.jar
$ java -jar helloworld.jar 
Hello world!

Can you also direct me to the right documentation about how I can use this uberjar with nginx?

like image 680
Zeynel Avatar asked Dec 18 '13 19:12

Zeynel


1 Answers

Please try Nginx-Clojure module. You can run clojure Ring handlers with Nginx without any Java Web Server, eg. Jetty.

like image 183
xfeep Avatar answered Sep 21 '22 23:09

xfeep