准备工作:
已安装好nginx
1、安装OpenSSL
下载OpenSSL http://slproweb.com/products/Win32OpenSSL.html
2、生成https证书
在nginx目录下新建文件夹ssl,在此目录下生成证书文件。运行OpenSSL\bin下的openssl.exe文件执行下列命令:
1、genrsa -des3 -out *.key 1024
2、req -new -key *.key -out *.csr
3、rsa -in *.key -out *_nopass.key
4、req -new -x509 -days 3650 -key *_nopass.key -out *.crt
(说明:*是你自己起的文件名,第一个文件会提示设个密码,后面会用到这个密码。第二个文件需要提供一些参数,像国家、省市、公司、域名等,如果不在意的话随便填都可以。)
生成的4个文件为:
3、nginx配置
修改 nginx 下的 nginx.conf配置文件
http{
upstream cmbdp_vue{
server ip:port; #目的IP及端口
}
server {
listen 9888 ssl; #监听本地端口9888 开启ssl
server_name localip; #本机ip
ssl_certificate E://nginx-1.16.1//ssl//cmbdp.crt; # 这个是证书的crt文件所在目录
ssl_certificate_key E://nginx-1.16.1//ssl//cmbdp.key; # 这个是证书key文件所在目录
location /{
proxy_pass http://cmbdp_vue; #转发到目的地址
}
}
}
4、WebSocket 配置
https下的websocket路径以"wss"开头:
var ws = new WebSocket('wss://192.168.167.146:15674/wss');
nginx的conf配置中增加代理websocket的设置:
upstream cmbdp_ws{
server ip:port; # websocket地址
}
server {
listen 15674 ssl;
server_name localip;
ssl_certificate E://nginx-1.16.1//ssl//cmbdp.crt; # 这个是证书的crt文件所在目录
ssl_certificate_key E://nginx-1.16.1//ssl//cmbdp.key; # 这个是证书key文件所在目录
location /wss {
proxy_pass http://cmbdp_ws/ws; # 将前端路径中的"wss"转发到实际路径,注意改为"ws",因为实际websocket地址为http请求
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}