从过去的几天开始,我正在研究如何在 NGINX 的帮助下实现 API 版本控制。
在应用程序级别,我能够实现但这需要 2 个 Diff 控制器、2 个 diff 路由、2 个 diff 模型等。我不想那样做。
我想要两个不同的项目,比如 v1 和 v2。使用 NGINX,如果我的 URL 包含 v1,那么它指向 v1 项目,如果 URL 包含 v2,那么它将指向 v2 项目类似的东西。
我知道使用 NGINX ALIAS 或 ROOT 我们可以做到这一点,但我不知道怎么做?
从过去的几天开始,我正在研究如何在 NGINX 的帮助下实现 API 版本控制。
在应用程序级别,我能够实现但这需要 2 个 Diff 控制器、2 个 diff 路由、2 个 diff 模型等。我不想那样做。
我想要两个不同的项目,比如 v1 和 v2。使用 NGINX,如果我的 URL 包含 v1,那么它指向 v1 项目,如果 URL 包含 v2,那么它将指向 v2 项目类似的东西。
我知道使用 NGINX ALIAS 或 ROOT 我们可以做到这一点,但我不知道怎么做?
其实我们说的就是如何将nginx配置为反向代理。并根据 URL 的内容为不同的项目做代理。
在您的情况下,您需要:
在不同的端口配置sails-projects。例如:
对于 API.V1:sails.config.port
-> 3010
对于 API.V2:sails.config.port
-> 3020
添加到 nginx 配置 ( nginx.conf
)两个上游(例如,位于同一服务器上的 nginx 和 api-projects)。
为不同的 api添加两个位置到 nginx 配置(nginx.conf
在服务器块内) 。
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;
}
}