从过去的几天开始,我正在研究如何在NGINX的帮助下实现API版本控制。
在应用程序级别,我能够实现但是这需要2个Diff控制器,2个diff路径,2个diff模型等。我不想这样做。
我想要两个不同的项目,比如v1和v2。使用NGINX,如果我的URL包含v1,那么它指向v1项目,如果URL包含v2,那么它将指向v2项目类似的东西。
我知道使用NGINX ALIAS或ROOT我们能做到但我不知道怎么做?
答案 0 :(得分:1)
实际上,我们正在讨论如何将nginx配置为反向代理。并根据URL的内容为不同的项目执行代理。
在您的情况下,您需要:
配置sail-projects at different ports。例如:
for API.V1:sails.config.port
- > 3010
for API.V2:sails.config.port
- > 3020
添加到nginx配置(nginx.conf
)two upstream(例如,位于同一服务器上的nginx和api-projects)。
为不同的api添加到服务器块内的nginx配置(nginx.conf
)two locations。
Nginx配置可能如下所示:
upstream api_v1 {
server 127.0.0.1:3010;
keepalive 64;
}
upstream api_v2 {
server 127.0.0.1:3020;
keepalive 64;
}
server {
listen 80;
server_name example.com;
location /api/v1 {
proxy_pass http://api_v1;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location /api/v2 {
proxy_pass http://api_v2;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}