2013-03-13 2 views
3
var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(9000, "127.0.0.1"); 
console.log('Server running at http://127.0.0.1:9000/'); 

위의 코드를 사용하여 nodejs를 시작합니다. 프로세스를 시작하고 브라우저에서 실행하면 응답이 한 번 나오지만 그 이후에는 응답이 없습니다. 매번 다시 시작하면 응답이 1 회 발생하고 항상 멈 춥니 다. 어떻게 이것을 얻을 수있는이 지속적으로 실행됩니다. 미리 감사드립니다!NodeJs 서버가 하나의 응답 후 응답을 멈 춥니 다.

이 문제와 관련된 추가 정보 만 추가하면됩니다. 여기에 내가 영원히 -a가 응용 프로그램을 시작

을 app.js 시작 app.js 모두

노드를 사용하여 시도의 nginx의 conf 파일

server { 

    listen 80; 

    client_max_body_size 2M; 


    server_name my_domain; 


    root /home/node/My_Folder; 
    # access_log /var/log/nginx.vhost.access.log main; 
    send_timeout 1; 

location ~* ^.+\.(jpg|jpeg|JPG|JPEG|GIF|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov|html)$ { 
autoindex on; 
root /home/node/My_Folder; 
expires 30d; 

break; 
} 

location/{ 
     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_redirect off; 
     #proxy_connect_timeout 50ms; 
     #proxy_send_timeout 200ms; 
     #proxy_read_timeout 200ms; 
     proxy_next_upstream error; 
     proxy_pass http://Handler; 
     #index no_ads.html no_ads.htm; 
     break; 
} 

} 

upstream Handler { 
     server 127.0.0.1:8010; 
     server 127.0.0.1:8011; 
     server 127.0.0.1:8012; 
     server 127.0.0.1:8013; 
     server 127.0.0.1:8014; 
     server 127.0.0.1:8015; 
     server 127.0.0.1:8016; 
     server 127.0.0.1:8017; 
     server 127.0.0.1:8018; 
     server 127.0.0.1:8019; 
     server 127.0.0.1:9000; 
} 

에서 조각이지만, 두 가지 방법이 내가 얻을 단 하나의 응답과 타임 아웃. 나는 같은 서버에서 실행되는 두 개의 다른 노드 애플리케이션을 가지고 있고 그것들은 정상적으로 작동하는 것 같다. 그래서 나는 완전히 당신의 nginx 설정 파일 내부

포트 9000에

+0

코드가 정상적으로 보입니다. 이게 실제로 일어 났는지 확신합니까? wget이나 curl로 확인 했습니까? 또한 여러분의'console.log'는 실제로 들으려는 포트와 다른 포트를 말합니다. 단지 URL을 입력했을 때를 대비 해서요. – Brad

+0

Brad, 빠른 응답을 보내 주셔서 감사합니다. 포트 번호가 고정되어있었습니다. 여기에 코드를 입력하면 코드가 업데이트됩니다. 그러나 나는 이것이 내가 일어난 일이라고 확신한다. 나는 멈추고 여러 번 시작하려고 노력했다. 그러나 단 하나의 응답과 일관성이 있습니다. wget이나 curl이 무엇인지 잘 모르겠습니다. 이것을 통해 나를 안내 할 수있는 링크를 보내주십시오. – jay

+0

특히 "하나의 응답"이란 무엇입니까? 새로 고침을 할 때 연결을 만들 수 없다는 뜻입니까? – Brad

답변

3

귀하의 Node.js를 응용 프로그램이 실행을 상실하고, 당신은 노드에 들어오는 요청을 리디렉션해야

proxy_pass http://Handler; 

을 설정했다. JS의 applicaton,하지만 당신이 직접이 요청을 리디렉션하지만로 구성된 상류에 다음되지 않습니다

upstream Handler { 
    server 127.0.0.1:8010; 
    server 127.0.0.1:8011; 
    server 127.0.0.1:8012; 
    server 127.0.0.1:8013; 
    server 127.0.0.1:8014; 
    server 127.0.0.1:8015; 
    server 127.0.0.1:8016; 
    server 127.0.0.1:8017; 
    server 127.0.0.1:8018; 
    server 127.0.0.1:8019; 
    server 127.0.0.1:9000; 
} 

는 기본 roun을 사용하여 Nginx에 따라 d-robin은 NGinx가 포트 9000 (작동 함)에 연결하려고 시도하는 11 번 중 하나에서 다음 10 번은 존재하지 않는 서버에 액세스하려고 시도한다는 것을 의미합니다.

따라서 연결을 만들 수 없으며 오류 메시지가 나타납니다.

업스트림 블록 내의 다른 모든 서버 항목을 제거하고 업스트림 블록을 완전히 제거하고 단일 Node.js 서버를 프록시로 직접 구성하거나 포트 8010, 8011, ...을 사용하여 추가 Node.js 서버를 시작합니다. 모든 것이 효과가있다.

업스트림을 구성하는 방법에 대한 자세한 내용은 NGinx documentation on the HttpUpstreamModule을 참조하십시오.

+0

고로 감사합니다. 문제가 해결 된 것 같습니다. – jay

+0

위대한, 당신은 환영합니다 :-) –

관련 문제