2017-09-25 10 views
1

Je suis en train de configurer mon serveur de nœud qui utilise exprès pour servir des fichiers sur le port 3000 et la bibliothèque net au service d'un serveur TCP sur le port 5052, donc:NGINX config avec Node.js Express et le serveur TCP sur le même port?

const express = require('express'); 
const app = express(); 
const httpServer = require('http').Server(app); 
const io = require('socket.io').listen(httpServer); 
const path = require('path'); 
const net = require('net'); 

app.get('/', (req, res) => { 
    res.sendFile(path.join(__dirname, './public/index.html')) 
}); 

let server = net.createServer(function(socket) { 
// Left out for brevity 
} 

server.listen(5052, 'localhost'); 

httpServer.listen(3000,() => { 
    console.log('Ready on port 3000'); 
}); 

Localement, tout cela fonctionne très bien. Je peux charger localhost:3000 et j'obtiens mon HTML servi et il se connecte à socket.io bien. Je peux également me connecter au serveur sur le port 5052 parfaitement et la vie est bonne. Je n'arrive tout simplement pas à faire en sorte que nginx fonctionne correctement. Voici ce que j'ai:

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 

    server_name mycoolproject.com www.mycoolproject.com; 

    location/{ 
     proxy_pass http://localhost:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 

    listen 443 ssl; 
    ssl_certificate /etc/letsencrypt/live/mycoolproject.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/mycoolproject.com/privkey.pem; 
    include /etc/letsencrypt/options-ssl-nginx.conf; 

    ssl_dhparam /etc/ssl/certs/dhparam.pem; 

    if ($scheme != "https") { 
     return 301 https://$host$request_uri; 
    } 

} 

server { 
    listen 5053; 

    server_name mycoolproject.com www.mycoolproject.com; 

    location /{ 
     proxy_pass http://localhost:5052; 
       proxy_http_version 1.1; 
       proxy_set_header Upgrade $http_upgrade; 
       proxy_set_header Connection 'upgrade'; 
       proxy_set_header Host $host; 
       proxy_cache_bypass $http_upgrade; 
    } 
} 

Quand je navigue à mycoolproject.com je reçois le site chargé très bien, de sorte que le côté express fonctionne très bien. Je ne peux pas me connecter à mon serveur sur 5053. Des idées?

+0

une question, local où vous avez dit cela fonctionne, servez-vous avec nginx aussi? – Kalamarico

Répondre

0

Vous devez configurer un port différent pour Nginx, 5052 est occupé par Node.js.

server { 
    listen 5053; 

    server_name mycoolproject.com www.mycoolproject.com; 

    location /{ 
     proxy_pass http://localhost:5052; 
       proxy_http_version 1.1; 
       proxy_set_header Upgrade $http_upgrade; 
       proxy_set_header Connection 'upgrade'; 
       proxy_set_header Host $host; 
       proxy_cache_bypass $http_upgrade; 
    } 
} 

Ensuite, vous pouvez vous connecter à mycoolproject.com:5053