加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

我可以将Clojure与nginx一起使用吗?

发布时间:2020-12-13 21:06:53 所属栏目:Nginx 来源:网络整理
导读:这是我的问题here的后续跟踪.我已经设置了一个家庭服务器(只是我的其他笔记本电脑运行ubuntu和nginx),我想提供clojure文件. 我正在请求帮助以了解此过程的工作原理.对不起,我很困惑,我想我需要重新开始.我问了一个新问题,因为我想使用nginx而不是lein ring s

这是我的问题here的后续跟踪.我已经设置了一个家庭服务器(只是我的其他笔记本电脑运行ubuntu和nginx),我想提供clojure文件.

我正在请求帮助以了解此过程的工作原理.对不起,我很困惑,我想我需要重新开始.我问了一个新问题,因为我想使用nginx而不是lein ring server,正如该问题的答案中所建议的那样.

首先我和leiningen一起创建了一个项目留言簿,然后我运行了lein ring server,我在localhost:3000看到了“Hello World”.据我所知,这与nginx无关!

nginx如何进入这个过程?起初我试图用nginx创建一个代理服务器,但也有效,但我不知道如何使用该设置提供clojure文件.

这是我在改编自this answer的nginx.conf文件中的内容:

 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;
    }
}

所以我想使用我的域example.com(不是localhost);我该怎么做呢?

编辑

根据@noisesmith’s comment,我会选择使用lein uberjar选项.正如here所解释的那样,创建一个很容易:

$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!

您是否也可以直接向我提供有关如何将此uberjar与nginx一起使用的正确文档?

最佳答案
对于初学者,不要使用lein来运行生产中的东西.您可以使用lein uberjar创建一个jar文件,其中所有deps都可以运行,而java -jar可以从生成的jar中运行应用程序.还可以选择运行lein ring uberwar来创建一个在tomcat中运行的war存档,它提供了一些其他便利(例如日志轮换以及在大多数Linux系统上与/etc/init.d集成作为服务等).

nginx位于您的应用程序前面,位于端口80.它将通过代理您的应用程序来提供内容.这很有用,因为nginx具有许多功能(especially regarding security),您无需在自己的应用程序中实现这些功能,包括与https和selinux集成的可选集成.在应用程序前面使用nginx也可以防止您需要以root身份运行java(通常只有root用户可以使用端口80).此外,您可以让nginx直接提供静态资源,而不必从您的应用程序提供服务.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读