Я пытался развернуть приложение чата на моем домашнем сервере Ubuntu. Он работает локально, когда я подключаюсь к нему, используя внутренний ip или имя хоста локального сервера.
Я использую обратный прокси-сервер nginx для переключения с http://localhost:3000 на мой внешний домен, чтобы я мог получить к нему доступ через Интернет извне: http://tfmserver.dynu.net/
Nginx прокси:
server {
listen 80;
listen [::]:80;
root /var/www/tfmserver.dynu.net/html;
index index.html index.htm index.nginx-debian.html;
server_name tfmserver.dynu.net;
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;
}
Кажется, я получаю ошибки, подобные следующим, но иногда они отличаются в зависимости от того, что я пытаюсь сделать, чтобы это исправить:
WebSocket connection to 'ws://tfmserver.dynu.net/socket.io/?EIO=3&transport=websocket&sid=wQY_D0JOZm4VWGXgAAAA' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
или
POST http://tfmserver.dynu.net/socket.io/?EIO=3&transport=polling&t=MklujE_&sid=fbdZir8lxOlMOZm6AAAA net::ERR_CONNECTION_TIMED_OUT
Согласно некоторым сообщениям, которые люди сделали об этой ошибке, они говорят, что Chrome пытается использовать его как SSL, но он не обслуживается таким образом, однако я добавил SSL на сервер и в проект, но он не устраняет вопрос. На данный момент я удалил его, но не возражал бы добавить его обратно, если это возможно, как только оно заработает.
Я перепробовал все, что мог, из всех возможных других вопросов, опубликованных здесь, но ни один не решил проблему.
Как я могу заставить это работать внешне? Что я делаю не так?
Вот соответствующие части проекта для сокетов. Если вам нужно что-то еще, что может помочь, пожалуйста, дайте мне знать - заранее спасибо!
Сервер:
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(process.env.PORT || 3000, 'localhost');
клиент:
var socket = io.connect();
ОБНОВЛЕНИЕ: - Примечание: я только что подключился к нему со своего рабочего компьютера, и он работает ?! Но это не работает в моей собственной сети при попытке использовать внешний адрес? Что с этим?