0

我正在参与一个在 SSL 和 Cloudflare 上存在一些套接字问题的项目……我知道……我已经阅读了大约 50 篇不同的堆栈溢出文章和 200 篇博客文章,试图弄清楚这一点。该项目可以在我的本地开发服务器/计算机上正常运行...

我认为我走在正确的轨道上 - 但如果可以的话,可以使用一些帮助/指针。

首先,我觉得 /socket-io/proxy_pass 位于端口 6379 与 redis 相同,这很奇怪......也许应该是?当此设置为 6379 时,套接字连接将无法连接 - 无论是否启用 Cloudflare(我暂停了 cloudflare 以进行测试)。

我通读了快速服务器,发现套接字服务器似乎链接到端口 4000 的快速服务器......所以我将 /socket-io/ 的 proxy_pass 更改为端口 4000 并重新连接。这适用于 Cloudflare 暂停/运行......所以也许它毕竟不是 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 端口都使用本地主机?

4

0 回答 0