在宝塔中使用nginx将域名映射至端口,并且支持webSocket访问
1.在宝塔首页创建网站:

数据库可不创建 域名提前准备好
2.点击刚刚创建的网站,点击配置文件, 将如下代码粘贴在相应位置并做相应修改
location / {
proxy_pass http://localhost:8082/shop/;#注意 这里需要稍作修改 访问本地8082端口下的shop项目路径
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header From $host;
proxy_cookie_path ~*^/.* /;
proxy_set_header Cookie $http_cookie;
}

3.随后删除下方代码

4.为了能保持websocket的长连接, 需要做以下配置
在网站的配置文件中增加如下代码
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 10s;
proxy_read_timeout 60s;
proxy_send_timeout 12s;

5.随后在nginx配置文件中添加代码
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

重启一下nginx, 这样就可以实现使用域名不携带端口号访问非80端口的项目了 并且能保证websocket长连接
注意: 由于配置文件中设置的连接超时时间为10秒 所以websocket长连接需要在服务端做定时心跳以维持连接不断开 建议8秒一次心跳