请在将此标记为重复阅读我自己的情况之前,它与其他人有点不同。
我正在开发我想在同一个域下拥有的多个node.js端点。
这些服务确实会对以下内容做出回应:
/user/:user_id/authorization
- 授权服务的基本路径/user/:user_id/log
- 日志服务的基本路径等等。
第一部分/user/:user_id/
与所有服务相同,它只是一种在路径中传递用户ID而不是使用Authentication头的REST方式。
有没有办法可以将NGINX反向代理到这些网络服务,因为它们使用相同的基本路径?
另一个问题:如果NGINX不用于缓存内容,它是否可以降级node.js的性能(例如,如果它的性能比node.js差,如果它是反向代理的话)?
答案 0 :(得分:2)
使用nginx,你可以做任何你想要的路由,在这里作为一个起点:http://nginx.org/en/docs/http/request_processing.html和http://nginx.org/r/location
另一个问题:如果NGINX不用于缓存内容,它是否可以降级node.js的性能(例如,如果它的性能比node.js差,如果它是反向代理的话)?
答案 1 :(得分:0)
如果我清楚地理解你的问题,你需要这样的事情:
server {
listen 80;
server_name default;
root /var/www/;
access_log /var/log/nginx/access.log combined;
error_log /var/log/nginx/error.log error;
location / {
if (-f $request_filename) {
access_log off;
expires 30d;
break;
}
error_log off;
error_page 404 = @node;
}
location @node {
if ($uri ~ "/user/(.*)/authorization") { proxy_pass http://127.0.0.1:8080; } #authorization service
if ($uri ~ "/user/(.*)/log") { proxy_pass http://127.0.0.1:8081; } #log service
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
}
}