Ну наконец-то я нашел проблему и решение.
Я обнаружил, что проблема с Parse Dashboard # 429 (запуск панели через https)
И я понял, что мой Parse Server должен сообщить NGINX, что ему нужно работать в SLL, и предоставить сертификаты, которые я создал с помощью Let's Encrypt.
Так вот правильный код:
var fs = require('fs');
var https = require('https');
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var ParseDashboard = require('parse-dashboard');
var path = require('path');
var app = express();
var port = 1337;
var options = { key: fs.readFileSync(path.resolve(__dirname, '/etc/letsencrypt/live/sitedomain/privkey.pem')),
cert: fs.readFileSync(path.resolve(__dirname, '/etc/letsencrypt/live/sitedomain/fullchain.pem')), };
var parse = new ParseServer({ databaseURI: 'mongodb://localhost:540556/admin',
cloud: __dirname + '/cloud/main.js',
appId: 'appId',
masterKey: 'masterKey',
serverURL: 'https://example.com',
liveQuery: { classNames: ["Posts", "Comments"] // List of classes to support for query subscriptions } });
var app = express();
app.use('/public', express.static(path.join(__dirname, '/public')));
app.use('/parse', parse);
app.get('/', function(req, res) { res.status(200).send('404'); });
var server = https.createServer(options, app).listen(port, function() {
console.log("server listening on port " + port);
});
И та же концепция для Socket.io
var socket = null;
function startSocketServer(){
//Socket.io
const express = require('express');
const socketIO = require('socket.io');
const https = require('https');
const socketPort = 3000;
const fs = require('fs');
const path = require('path');
var options = {
key: fs.readFileSync(path.resolve(__dirname, '/etc/letsencrypt/live/sitedomain/privkey.pem')),
cert: fs.readFileSync(path.resolve(__dirname, '/etc/letsencrypt/live/sitedomain/fullchain.pem')),
};
var socketServer = https.createServer(options, express()).listen(socketPort, function() {
console.log("socketServer listening on port " + socketPort);
});
socket = socketIO(socketServer);
socket.on('connection', (socket) => {
console.log('Client connected');
socket.on('disconnect', () => console.log('Client disconnected'));
});
}
Все настройки NGINX были правильными
Я тратил много времени и не нашел подобного решения в сети.
Надеюсь, это кому-нибудь поможет.
Привет.