cor*_*san 4 api hosting ruby-on-rails express server
我有一个Rails API和一个Web应用程序(使用express),完全独立且彼此独立.我想知道的是,我是否必须单独部署它们?如果我这样做,我怎么能这样做,以便我的api mysite.com/api和web应用程序在mysite.com/
我已经看到很多项目都是这样做的,甚至将api和应用程序放在单独的回购中.
通常,您不会将此类Web应用程序直接暴露给客户端.而是使用代理服务器,将所有传入请求转发到节点或rails服务器.
nginx是一个受欢迎的选择.在新手引导甚至包含了非常相似的示例,你想要做什么.
您可以通过类似于此的配置实现您想要的效果:
server {
location /api/ {
proxy_pass http://localhost:8000;
}
location / {
proxy_pass http://localhost:3000;
}
}
Run Code Online (Sandbox Code Playgroud)
这假设您的API在端口8000上本地运行,而您的快速应用程序在端口3000上运行.此外,这不是完整的配置文件 - 这需要加载或添加到http块中.从发行版的默认配置开始.
当有多个位置条目时,nginx会选择最具体的位置条目.您甚至可以添加更多条目,例如,以提供静态内容.
尽管斯文斯的答案对于给出的问题是完全正确的。我宁愿在DNS级别上执行此操作,以便我可以将服务器更改到新位置,以防万一我的API或Web应用程序承受沉重的负担。这有助于我们在不影响WebApp的情况下运行API,反之亦然
DNS结构
api.mysite.com => 9.9.9.9
mysite.com = > 9.9.9.9
Run Code Online (Sandbox Code Playgroud)
由于现在您希望WebApp和API都在同一服务器上运行,因此可以使用nginx适当地转发请求。
server {
listen 80;
server_name api.mysite.com;
# ..
# Removed for simplicity
# ..
location / {
proxy_pass http://localhost:3000;
}
}
server {
listen 80;
server_name www.mysite.com;
# ..
# Removed for simplicity
# ..
location / {
proxy_pass http://localhost:8000;
}
}
Run Code Online (Sandbox Code Playgroud)
将来任何时候,如果您遇到大量流量,都可以更改DNS以指向新服务器,那就太好了。