Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[部署问题]关于部署能正常看到界面 ,无法连接socket的问题。 #81

Closed
agoodcoolman opened this issue Jul 16, 2020 · 1 comment

Comments

@agoodcoolman
Copy link

agoodcoolman commented Jul 16, 2020

这个是自己部署的时候遇到的问题,不算一个问题,有解决方案,写下来提供给后面的小伙伴作为解决思路。

自己的域名是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; }

@agoodcoolman
Copy link
Author

格式好乱啊,我真的调不好了。就这么看吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant