通过使用ngx_http_sub_module,我们可以方便地对Nginx的响应内容进行过滤和替换
1、
服务器域名: xxx.yyy.com
IM服务器端口:pppp
项目中有个聊天功能,之前一直请求的 http://xxx.yyy.com:pppp 的格式,但是升级https之后,就报错了(https请求http服务器路径报错)
nginx的ssl配置略过,可查看之前的博客
下面是 socket.io server 的访问配置
location ^~/socket.io/ {
proxy_pass http://xxx.yyy.com:pppp;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;##此处Upgrade注意大小写
proxy_set_header Connection "Upgrade";
proxy_set_header Remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 15s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
或者也可以尝试一下配置
location /socket.io/ {
proxy_pass http://xxx.yyy.com:pppp;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;##此处Upgrade注意大小写
proxy_set_header Connection "Upgrade";
proxy_set_header Remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 15s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
然后 访问 https://xxx.yyy.com 即可通过https访问socket.io server
客户端访问
var url = 'https://xxx.yyy.com';
var socket = io.connect(url,{ transports: ["websocket"],query: {userId: 42,clientType:"app"}});
代理wss 把wss://xy3jsdecoder.ys7.com:20006代理到服务器上对应
wss://xxx.xxx.com:20006 必须带端口
修改响应数据
location /api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://open.ys7.com/api/;
proxy_connect_timeout 10s;
proxy_send_timeout 600s;
proxy_read_timeout 600s;
sub_filter_types *;
sub_filter_once off; # 是否只替换一次 默认on 这里改为off
sub_filter 'wss://xy3jsdecoder.ys7.com:20006' 'wss://xxx.xxx.com:20006';
}
代理wss
server {
listen 20006 ssl;
server_name xxx.xxx.com;
ssl_certificate /usr/local/ssl/xxx.xxx.cn.pem;
ssl_certificate_key /usr/local/ssl/xx.xxx.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://xy3jsdecoder.ys7.com:20006;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;##此处Upgrade注意大小写
proxy_set_header Connection "Upgrade";
proxy_set_header Remote_addr $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 15s;
proxy_send_timeout 3600s;
proxy_read_timeout 3600s;
}
}