Node.js Nginx-反向代理到多个后端

Node.js Nginx-反向代理到多个后端,node.js,nginx,Node.js,Nginx,请在将此标记为重复之前阅读我自己的案例,它与其他案例有点不同 我正在开发多个node.js端点,我希望在同一个域中拥有这些端点 这些服务对以下内容做出响应: /user/:用户标识/授权-授权服务的基本路径 /user/:user_id/log-日志服务的基本路径 等等 第一部分/user/:user_id/对所有服务都是一样的,它只是在路径中传递用户id的一种休息方式,而不是使用身份验证头 由于这些Web服务使用相同的基本路径,有没有办法将代理NGINX反向到这些Web服务? 另一个问题:

请在将此标记为重复之前阅读我自己的案例,它与其他案例有点不同

我正在开发多个node.js端点,我希望在同一个域中拥有这些端点

这些服务对以下内容做出响应:

  • /user/:用户标识/授权
    -授权服务的基本路径
  • /user/:user_id/log
    -日志服务的基本路径
等等

第一部分
/user/:user_id/
对所有服务都是一样的,它只是在路径中传递用户id的一种休息方式,而不是使用身份验证头

由于这些Web服务使用相同的基本路径,有没有办法将代理NGINX反向到这些Web服务?


另一个问题:如果NGINX不用于缓存内容,如果它是反向代理,它是否会降低node.js性能(例如,如果它的性能比node.js差?

如果我清楚地理解您的问题,您需要这样的东西:

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;
    }
}

有了nginx,你可以做任何你想做的路由,看看这里作为一个起点:和


另一个问题:如果NGINX不用于缓存内容,那么如果使用反向代理,它是否会降低node.js性能(例如,如果其性能比node.js差)


另请参阅:

感谢这些资源,我正在阅读它们。我也看到了你对Vadim答案的评论,我查看了“IfIsEvil”,他们说这是有效的还是无效的,不是随机行为,所以如果我配置它并在测试中工作,它将始终有效。。。否则,他们会采用不同的方法(如果有的话)。这是我的问题:我还有别的办法吗?我在读“请求处理”,我应该使用不同的“位置”部分吗?这样行吗?非常感谢。是的,在nginx中使用位置是首选方式。它使配置更清晰。此外,“位置”作为有效的搜索树进行了优化,运行速度更快。针对不同的任务使用不同的工具。我知道apache的家伙喜欢在其配置中编程,但nginx是不同的。还要注意,您可以有嵌入的位置块,比如:
location/user/{location~ ^/user/(?:.*)/authorization${..}