nginx到node.js-传递参数
我想通过nginx将某些参数传递给nodejs 虽然我仍然使用fastcgi,但我可以这样做: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
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