利用Openssl生成证书
# 生成一个RSA密钥
openssl genrsa -des3 -out bnt.key 1024
# 生成一个证书请求
openssl req -new -key bnt.key -out bnt.csr
# 自己签发证书
openssl x509 -req -days 365 -in bnt.csr -signkey bnt.key -out bnt.crt
修改Nginx配置
server {
listen 7099 ssl;
server_name localhost;
#
#
ssl on;
# 自己的证书,放在与nginx.conf同一文件夹下。(若放不同文件夹注意路径问题)
ssl_certificate /usr/local/nginx/bnt.crt;
ssl_certificate_key /usr/local/nginx/bnt.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
ssl_verify_client off;
location / {
proxy_redirect off;
proxy_pass https://freeswitch; # 转发
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # 升级协议头
proxy_set_header Connection upgrade;
}
}
重启nginx
可能会遇到的问题
配置完成后,重启可能会遇到 nginx:[emerg]unknown directive ssl 错误 ;因为我们配置这个SSL证书需要引用到nginx的中SSL这模块,然而我们一开始编译的Nginx的时候并没有把SSL模块一起编译进去,所以导致这个错误的出现。
解决步骤:
1.重新编译Nginx,将SSL模块一起编译进去
./configure --with-http_ssl_module
2.执行make命令,但是不要执行make install,因为make是用来编译的,而make install是安装,不然你整个nginx会重新覆盖的。
3.在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx
再重启Nginx