Я участвую в проекте с некоторыми проблемами сокетов через SSL и Cloudflare ... Я знаю ... Я прочитал около 50 различных сообщений о переполнении стека и 200 сообщений в блогах, чтобы попытаться понять это. Проект отлично работает на моем локальном dev-сервере / компьютере ...
Я думаю, что нахожусь на правильном пути - но могу использовать некоторую помощь / указатели, если сможете.
Сначала я подумал, что это странно, что / socket-io / proxy_pass находится на порту 6379, так же, как redis ... Может быть, так и должно быть? Когда это было установлено на 6379, соединение сокета не будет подключаться - с включенным Cloudflare или без него (я приостановил cloudflare, чтобы проверить это).
Я прочитал экспресс-сервер и увидел, что сервер сокетов кажется связанным с экспресс-сервером на порту 4000 ... поэтому я изменил proxy_pass для / socket-io / на порт 4000, и он снова подключается. Это работает с приостановленным / запущенным Cloudflare ... так что, возможно, это все-таки не облачная вспышка. Тем не менее, несмотря на то, что в браузере говорится, что сокет повторно подключился, ничего не работает.
Я начну с демонстрации своей конфигурации NGINX - дайте мне знать, что еще вам нужно увидеть, пожалуйста. Спасибо, что нашли время помочь мне / указать в правильном направлении! Мне очень нравится узнавать об этом.
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name dev-app.myapp.com;
location / {
root /var/www/myapp_frontend/build/;
try_files $uri $uri/ /index.html;
#proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
location /api/ {
proxy_pass http://localhost:4000/;
include /etc/nginx/proxy_params;
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;
}
location /socket.io/ {
proxy_pass http://localhost:6379;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_read_timeout 86400;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/letsencrypt/live/dev-app.myapp.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/dev-app.myapp.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = dev-app.myapp.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name dev-app.myapp.com;
listen 80 default_server;
listen [::]:80 default_server;
return 404; # managed by Certbot
}
Edit-1 Я действительно видел, что cloudflare требует определенных портов ... Я ошибаюсь, думая, что эти порты относятся только к исходному порту прослушивания, например 443 выше, поскольку все порты proxy_pass используют localhost ?