鍍金池/ 問答/Java  PHP  Linux  HTML/ 在https網(wǎng)站上用socket.io,socket使用http,然后block

在https網(wǎng)站上用socket.io,socket使用http,然后blocked:mixed-content,怎么解決?

  1. socket使用3000端口,并且使用ip訪問:
    http://192.54.2.1:3000/socket.io/?EIO=3&transport=polling&t=M8f3APD;
  2. nginx把域名下的所有http都轉(zhuǎn)到https;
  3. socketip換成域名無法訪問;

主要問題:http的socket如何在https的網(wǎng)站使用??

回答
編輯回答
撥弦

nginx 配置文件

### 強制把域名下的所有http都轉(zhuǎn)到https
server {
    listen 80;
    server_name ineedtm.com www.ineedtm.com;
    rewrite ^(.*) https://$server_name$1 permanent;
}
# HTTPS server
#
server {
    # listen 80;
    listen       443 ssl;
    server_name  ineedtm.com www.ineedtm.com;

    ssl_certificate   cert/2xxx50.pem;
    ssl_certificate_key  cert/2xx50.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    root /xxx/blog;

    location / {
        index index.html;
    }
    
    # 后端接口反向代理設置,請忽略
    location /api/ {
       proxy_pass http://api.ineedtm.com/api/;
    }
    
    # socket代理配置
    location /socket.io/ {
        proxy_pass http://192.54.2.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

注意:
配置前端socket連接時別帶端口,但要配置到https://ineedtm.com/而不是htt...://ineedtm.com/socket.io/

2017年12月24日 00:34
編輯回答
別傷我

你需要在nginx里面處理一下websocket

2018年5月22日 05:17