跳转至

Ubuntu Nginx 配置使用WSS

更新日期 2022-7-6
  • 2022-7-6 修复链接
  • 2022-6-27 增加nginx拓展
  • 2022-5-7 跨域说明
  • 2022-5-6 更新说明
  • 2022-5-5 创建文档

运行环境与工具

  • Ubuntu 16.04.1 LTS
  • nginx 1.10.3 (Ubuntu)
  • pm2 4.4.1

证书与域名

我们用NestJS来写一个wss服务部署到服务器上

准备一个域名,例如 antalkws.rustfisher.com

申请这个域名的SSL证书,并部署到服务器上

Nginx配置

服务器的Ubuntu用的是Nginx,配置一下 /etc/nginx/sites-enabled/ 目录里的文件

map $http_upgrade $connection_upgrade {  
    default upgrade;  
    '' close;  
}

upstream talkwebsocket {  
    server 127.0.0.1:9002;
}

server {
    listen 443;
    server_name antalkws.rustfisher.com;
    ssl on;
    ssl_certificate /home/ubuntu/server/ssl/antalk/antalkws.rustfisher.com_bundle.crt;
    ssl_certificate_key /home/ubuntu/server/ssl/antalk/antalkws.rustfisher.com.key;
    ssl_session_timeout 20m;
    ssl_verify_client off;
    location / {
        proxy_pass http://talkwebsocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_read_timeout 300s;
    }  
}

指定talkwebsocket,使用的是本地9002端口

监听端口是443。如果启用了防火墙,要让防火墙允许这个端口。 转发到上面定义的talkwebsocket

proxy_read_timeout 300s 表示连上后300秒后无消息则自动断开

超时会报 1006 Abnormal Closure

这样Nginx配置就弄好了。

测试

用postman来测试验证

postman验证

记得要选择Raw类型

postman

可以看到连接时间和断开时间,相差300秒

我们并没有配置ws的情况,如果用postman尝试连接ws则会报错

postman 连接ws情况

postman

跨域问题

关于跨域问题,如果我们在服务的代码中进行了配置,nginx这边是不需要额外配置的。

不需要配置跨域了

add_header相关的注释掉

    location / {  
        proxy_pass http://talkwebsocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_read_timeout 300s;

#   add_header 'Access-Control-Allow-Origin' '*';
#   add_header 'Access-Control-Allow-Credentials' 'true';
#   add_header 'Access-Control-Allow-Methods' 'OPTION, POST, GET';
#   add_header 'Access-Control-Allow-Headers' 'X-Requested-With, Content-Type';

    }  

附录 centos nginx

centos7上配置使用nginx

先找一下nginx的路径

whereis nginx 

nginx: /usr/local/nginx

确定nginx路径为/usr/local/nginx/sbin

编辑 /etc/profile

vim /etc/profile

添加nginx的路径给PATH

export PATH=/usr/local/nginx/sbin:$PATH

本站说明

一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。

AndroidTutorial AndroidTutorial 反馈问题 讨论区 最近更新 投喂作者

Ads