Nginx配置SSL证书搭建HTTPS服务器

利用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

你可能感兴趣的:(Nginx配置SSL证书搭建HTTPS服务器)