1

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

我正在开发多个我想在同一个域下拥有的 node.js 端点。

这些服务确实会响应以下内容:

  • /user/:user_id/authorization- 授权服务的基本路径
  • /user/:user_id/log- 日志服务的基本路径

等等。

第一部分/user/:user_id/对所有服务都是一样的,它只是一种在路径内传递用户 ID 的 REST 方式,而不是使用 Authentication 标头。

有没有办法可以将 NGINX 反向代理到这些 Web 服务,因为它们使用相同的基本路径?

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

4

2 回答 2

3

使用 nginx,你可以做任何你想做的路由,看这里作为起点: http: //nginx.org/en/docs/http/request_processing.htmlhttp://nginx.org/r/location


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

node.js 本身或用于提供静态文件的 nginx 前端?

另见:http ://www.aosabook.org/en/nginx.html

于 2012-11-15T17:35:31.530 回答
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;
    }
}
于 2012-11-15T15:44:03.970 回答