gpt4 book ai didi

clojure - 如何在同一服务器上运行多个 Ring 应用程序?

转载 作者:行者123 更新时间:2023-12-02 14:11:25 26 4
gpt4 key购买 nike

我是 Ring(以及一般的 Clojure 服务器端编程)新手。我有一个基于 Ring 的应用程序,在“开发模式”下运行良好,即它可以监听 localhost:3000 并做出适当的响应。作为部署此应用程序的一部分,我想将应用程序的基本 URL 更改为 myserver.com/analytics/v1 之类的内容,以便之前发送到 localhost 的请求:3000/foo 现在应该转到 myserver.com/analytics/v1/foo

我想我这里有两个密切相关的问题:如何告诉 Ring/Jetty 仅监听某个不是服务器根 URL 的 URL?我该如何设置才能添加另一个应用程序(例如,myserver.com/analytics/v2),而无需第一个应用程序停机?我是否需要编写另一个 Ring 应用程序来监听 myserver.com/ 并根据需要将请求路由到我的其他应用程序?

最佳答案

我目前处理此问题的方式是让每个 Ring 应用程序在其自己的嵌入式 Jetty 实例中运行,每个应用程序都监听自己的端口,例如:8080 和 8085。在服务器上,我从外部阻止了这些端口,因此只有本地主机可以访问它们。

然后我设置Nginx根据子域选择正确的应用程序:

还有更高级的设置可能,但对我来说这是配置最少的设置。

这是我的 nginx.conf。如果您想了解更多配置详细信息,请告诉我。

server {    listen     80;
server_name twitter.michielborkent.nl;
access_log /var/log/twitter-service.log;

location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}

server { listen 80;
server_name tictactoe.michielborkent.nl;
access_log /var/log/tictactoe.log;

location / {
proxy_pass http://localhost:8085;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}

关于clojure - 如何在同一服务器上运行多个 Ring 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com