2013-07-05 4 views
2

nginx를 통해 nodejs에 특정 매개 변수를 전달하고 싶습니다.nginx to node.js - 매개 변수 전달

fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name; 
fastcgi_param PATH_INFO    $fastcgi_script_name; 

을 그리고 지금은 기본적으로 Node.js를

를 들어, 동일한 기능을이 내 현재 구성 될 찾고 있어요 : 난 아직 FastCGI를 사용하는 동안

,이 방법으로 그렇게 할 수 :

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에서 전달 된 값을 읽으려면 어떻게해야합니까?

답변

4

직접의 nginx의 설정에서, 귀하의 질문을 해결 짧은 대답은, 같은 줄을 추가 이 :

proxy_set_header X-My-Custom-Param-1 $whatever_variable_you_want_to_pass; 

그리고 당신의 명시 적 경로 처리기 능에서 그것을 읽을 수 당신은 당신이 해결하고자하는 더 큰 문제와 특정 값 (들) 당신이 통과 할 필요가 있다고 생각을 설명하면 n은

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

그러나, 우리는 경우 구체적인 도움을 줄 수 있습니다. 문제를 제대로 풀지 못했을 가능성이 큽니다. 이러한 설정이 필요한 실제 사용 사례를 보지 못했습니다.

+0

많은 도움이 될 것 같아요. 시나리오는 config 파일이/var/www /에/etc /에 저장되어 있지 않기 때문에 서버에 다른 config-file 경로를 전달한다는 것입니다. NGINX config 자체가이를 처리하므로 다른 dev configs (dev, staging 등)를 가질 수 있으며 NGINX conf를 통해 직접 조정할 수 있습니다. – user169099

+0

젠장, 나는 노드와 함께, 그것을 이해하지 못했다. PHP에서는 모든 호출이 전체 프로세스 였기 때문에 수행했지만 노드를 사용하면 params로 시작해야합니다. – user169099

+0

예, 노드에서 규칙은 단순한 구성 파일 (.js 또는 .json) 또는 환경 변수를 사용하는 것입니다. –

0

모든 매개 변수가 기본적으로 전달되며 필요한 것은 노드 자체에서 라우팅을 처리하는 것입니다.

express.js을 확인하십시오 (필요한 경우) regexp로 매우 유연한 경로를 정의 할 수 있으므로 확인하십시오.
Express의 paramsquery 데이터 (PHP의 경우 $ _GET)와 다릅니다. query 데이터는 URL의 물음표 뒤에 표시되지만 params은 경로에 정의되어 있습니다.

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' 
    } 
} 
+0

GET 매개 변수를 사용 하시겠습니까? 나는 실제로 GET 매개 변수에 대해 이야기하는 것을 원하지 않았지만, '내부'매개 변수에 대해 말하지 않았습니다. 잘못된 문구를 사용한다면, 나는 그것을 알지 못했습니다. NGINX 설정 파일 항목을 참조하고 있습니다. (예 : 특정 경로 등) – user169099

+0

GET 매개 변수는'query'입니다. – moka

+0

답변을 업데이트했습니다. – moka