My socket does not connect when I am using Nginx. My config file is:
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name mysite.com
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;
ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !MD5 !EXP !DSS !PSK !SRP !kECDH !CAMELLIA !RC4 !SEED';
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
keepalive_timeout 70;
access_log /var/log/nginx/dash.log;
# pass the request to the node.js server
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header Front-End-Https on;
proxy_pass https://127.0.0.1:8081;
proxy_redirect off;
}
}
My NodeJS is:
// Setup servers
var app = express();
var HTTPSOptions = {
cert: fs.readFileSync(config.ssl.server_cert),
key: fs.readFileSync(config.ssl.server_key),
requestCert: false,
rejectUnauthorized: false,
passphrase: config.ssl.server_password
};
HTTPSOptions.agent = new https.Agent(HTTPSOptions);
io = io.listen(server, {
log: false
});
io.sockets.on('connection', function (sock) {
console.log("CONNECTED");
});
var httpsServer = https.createServer(HTTPSOptions, app);
And my client is
var socket = io.connect('https://localhost', {secure: true});
socket.on('connect', function () {
console.log("CONNECTED HERE TOO");
});
Needless to say, none of the two console.log
show anything. I'm worried that nginx is blocking the request and node is actually never getting it?