这个是自己部署的时候遇到的问题,不算一个问题,有解决方案,写下来提供给后面的小伙伴作为解决思路。
自己的域名是http的,对外只提供了一个80端口。所以我的后台项目,socket链接,都要用80端口转发。所以涉及到加后缀区分的问题,我使用的2.2的版本,其中的socoket域名与项目域名配置文件写在一起了,我自己遇到的问题是 域名/wechat 都使用同一个,然后nginx在转发的时候把socket链接拦截。上我的配置文件。
下面是nginx配置。。刚开始我的项目后台与socket都是使用 http://baidu.com/wechat 这个地址链接,项目可以正常打开,但是socket链接不报错,用wscat 链接返回200. nginx err也没有错误日志。
后来在看nginx的log日志的时候,发现socket链接的时候host是http://baidu.com/wechat这样的,于是我就把socket的配置单独修改成 http://baidu.com/ 这样了,然后就能连上socket了。
我的配置文件修改后的样子。
下面是config/client 修改后的样子,然后把src/socket中的地址修改即可。
export default {
server: (process.env.NODE_ENV === 'development' || isLocal )? 'http://localhost:8080/' : '//baidu.com/wechat/',
socketSerever: (process.env.NODE_ENV === 'development' || isLocal )? 'http://localhost:8080/' : '//baidu.com/',
}
server 外面配置
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 127.0.0.1:8087;
}
配置的一般的项目
location /wechat/ {
proxy_pass http://127.0.0.1:8087/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
client_max_body_size 2000m;
}
socket 服务的 location
location /socket.io/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_pass http://websocket;
}
项目作者使用的是https,以下是作者提供的nginx的配置。提供给大家参考。
server { listen 443 ssl; server_name www.qiufengh.com; # ssl on; #填写绑定证书的域名 listen 443 ssl; error_log logs/https-error.log debug; ssl_certificate /usr/local/nginx/conf/ssl_nginx/2704699_www.qiufengh.com.pem; ssl_certificate_key /usr/local/nginx/conf/ssl_nginx/2704699_www.qiufengh.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-NginX-Proxy true; # proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_pass http://localhost:9090; } location /static/files { root "/home/webchat/dist/"; } location = /50x.html { root html; } error_page 404 /; error_page 500 502 503 504 /50x.html; }