【问题标题】:Connecting two servers using unix domain sockets使用 unix 域套接字连接两台服务器
【发布时间】:2015-01-23 11:50:31
【问题描述】:
像Thin 和Unicorn 这样的Ruby Web 服务器通常在Nginx 后面使用(作为反向代理)。这种配置的好处是 Nginx Server 独立于 Ruby 版本,并且可以额外充当静态文件的代理。它们通常通过unix domain socket 相互连接,因为它比 TCP 环回连接更快。问题是如果您的应用程序由两部分组成,例如前端和后端或客户端和服务器,是否可以通过 unix 域套接字连接两个 Unicorn 或两个瘦服务器,如下所示:
nginx => thin (Frontend) --(unix domain socket)--> thin (backend)
【问题讨论】:
标签:
ruby
sockets
unix
unicorn
thin
【解决方案1】:
仅为代理到应用/应用到代理通信创建的应用服务器套接字。应用程序之间无法进行通信。
您应该创建前端应用程序来传达您的 API(后端)。您可以将 nginx 用于此目的。
只需在 nginx 配置中创建两个上游
upstream frontend {
server unix:/path/to/frontend/rails/app/tmp/thin.socket;
}
upstream backend {
server unix:/path/to/backend/rails/app/tmp/thin.socket;
}
并在服务器部分使用它
server {
location / {
proxy_pass http://frontend;
}
location /api {
proxy_pass http://backend;
}
}
希望对你有帮助