在宝塔中使用nginx将域名映射至端口,并且支持webSocket访问

在宝塔中使用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秒一次心跳

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注