Я настраиваю сервер в экземпляре Ubuntu AWS EC2, у которого есть реагирующий внешний интерфейс и экспресс-сервер nodejs. Эти два общаются через socket.io. Все отлично работает локально, но при размещении он регистрирует Failed to load resource: net::ERR_CONNECTION_REFUSED
и GET ${url} net::ERR_CONNECTION_REFUSED
. Сервер работает через pm2, а индекс клиента вызывается напрямую из nginx.
Я пытался создать конечную точку в nginx для порта сервера и вызывать ее через URL, а также пытаться использовать только localhost, с похожими результатами.
Конфигурация nginx:
server {
listen 443 default_server;
listen [::]:443 default_server;
root /var/www/[url]/client/build;
index index.html;
server_name [url] www.[url];
location / {
root /var/www/[url]/client/build;
index index.html;
try_files $uri /index.html;
}
ssl on;
ssl_certificate /etc/letsencrypt/live/[url]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[url]/privkey.pem;
}
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 5000;
server_name localhost; #also tried the url here (when also changed in the server)
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
Сервер:
//...
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
const http = require('http').Server(app);
const io = require('socket.io')(http);
const config = require('../client/src/config.json');
io.on('connection', function (socket) {
//...
socket.on('send_url', (data) => {
//connectUrl(data);
});
});
io.listen(config.Global.serverPort);
пример со стороны клиента:
import openSocket from 'socket.io';
const socket = openSocket(`http://localhost:${config.Global.serverPort}`);
//...
socket.emit('send_url', {
url: this.state.sheetURL,
googleId: this.props.user.googleId,
eventId: this.props.curEvent
});
Я могу успешно получить доступ к клиенту, но между клиентом и сервером не происходит никакой связи. Я работал над этим в течение нескольких дней и гуглял, но не могу найти много примеров, которые я нашел, чтобы работать. Это кажется основной вещью, поэтому мне кажется, что я упускаю что-то очевидное!
Спасибо!