nginx到node.js-传递参数

nginx到node.js-传递参数,node.js,parameters,nginx,proxypass,Node.js,Parameters,Nginx,Proxypass,我想通过nginx将某些参数传递给nodejs 虽然我仍然使用fastcgi,但我可以这样做: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; 现在我正在搜索与node.js完全相同的功能 这将是我当前的配置: server { # ... other stuf

我想通过nginx将某些参数传递给nodejs

虽然我仍然使用fastcgi,但我可以这样做:

fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
fastcgi_param   PATH_INFO               $fastcgi_script_name;
现在我正在搜索与node.js完全相同的功能

这将是我当前的配置:

server {
    # ... other stuff ...

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Nginx-Proxy true;

        proxy_pass http://node;
        proxy_redirect off;

        # pass any parameter here
    }

}

upstream node {
        server  127.0.0.1:8080;
}

我怎样才能做到这一点还有,如何读取node.js中传递的值?

默认情况下,任何参数都将被传递,您只需在node.js中自行处理路由

请检查,因为它允许使用regexp定义非常灵活的路由(如果需要)。
请记住,express中的
params
不同于
query
data(PHP中的$\u GET)。由于
查询
数据位于URL中的问号之后,但
参数
在路由中定义。
例如:

app.get('/user/:id', function(req, res, next) {
  res.send({
    params: req.params
    query: req.query
  }); // will respond with json object with 'id'
});
然后使用url:
http://example.com/user/23?foo=bar&hello=world

它将输出:

{
  params: {
    id: 23
  },
  query: {
    foo: 'bar',
    hello: 'world'
  }
}

在nginx配置中,可以直接回答您的问题的简短答案添加如下行:

proxy_set_header X-My-Custom-Param-1 $whatever_variable_you_want_to_pass;
要阅读express route handler函数中的内容

req.get('X-My-Custom-Param-1');

但是,如果您解释了您试图解决的较大问题以及您认为需要传递的具体值,我们可以在以下情况下提供具体帮助。很可能你解决的问题很糟糕。我还没有见过任何实际的用例需要这样的设置。

你的意思是获取参数,对吗?我实际上不是在谈论GET参数,而是关于“内部”参数——如果我使用了错误的措辞,我不知道这一点。我指的是NGINX配置文件条目。(例如,某个路径等)GET参数是
query
,我认为这会有很大帮助。场景是,我将不同的配置文件路径传递给服务器,因为配置文件不存储在/var/www/中,而是存储在/etc/中。NGINX配置本身负责这一点,这样我就可以拥有不同的开发配置(开发、登台等),并直接将它们引导到NGINX配置上。该死,我只是觉得使用node没有太大意义。在PHP中是这样的,因为每个调用都是整个过程-但是对于node,我应该用params启动它。是的,在node中,约定只使用一个简单的配置文件(.js或.json)或环境变量。当然,我有这个-但是我想在NGINX之外定义配置路径(配置文件的路径),如果需要,可以将其更改为不同的设置。我现在设法做到了这一点,并且正在处理一个新的命令行参数--config=/path/now