Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1044344
  • 博文数量: 157
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1388
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-09 15:37
文章分类

全部博文(157)

文章存档

2023年(9)

2022年(2)

2021年(18)

2020年(7)

2017年(13)

2016年(53)

2015年(55)

我的朋友

分类: 服务器与存储

2015-07-10 16:20:43

想给nginx添加个支持用户https访问的模块
查看现在已经加载的模块:/path/nginx -V,看到只有个configure arguments: --prefix=/usr/local/nginx1.7.11/
经查我需要添加http_ssl_module模块,怎么添加呢?
第一步:进如nginx的二进制文件目录,即包含你安装nginx时用到的configure的目录,在这个目录下包含文件【auto CHANGES CHANGES.ru conf configure configure.help contrib html LICENSE Makefile man objs README src】。(我们进入/src/http/modules/看到ngx_http_ssl_module.c和ngx_http_ssl_module.h,module下面是第三方模块,http下的是nginx本身的模块)
第二步:在此目录下执行./configure --prefix=path  --with-http_ssl_module
第三步:在此目录下继续执行make
第四步:从此目录下的objs目录下找到nginx,替换我们原来的可执行nginx文件,完毕。【注意复制前需要把原来的nginx备份,且不能make install

验证下:
/path/nginx -V ,看到:
nginx version: nginx/1.7.11
built by gcc 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx1.7.11/ --with-http_ssl_module

但是此时用户发送https请求仍然报错:
 wget "" -S
--2015-07-10 11:56:52-- 
Connecting to 192.168.10.74:8080... connected.
OpenSSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Unable to establish SSL connection.

注意:要想支持https访问,还要把ssl的配置添加到nginx.conf中
在linux下执行:

openssl genrsa -out key.pem 2048

 openssl req -new -key key.pem -out cert.csr

//会提示输入省份、城市、域名信息等,重要的是,email 一定要是你的域名后缀的你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。】

如果是自己做测试,可以不用上面的两条命令,用下面这一条命令来生成证书:(注意:后面需要输入国家省份等的都可以不输入直接回车)

 openssl req -new -x509 -nodes -out server.crt -keyout server.key 
本条命令生成server.keyserver.crt

在nginx.conf中添加配置:

server {
        listen       443 ssl;
        server_name  atstest.mytest1.com;
        ssl_certificate_key  /usr/local/nginx1.7.11/sslSecret/server.key;
        ssl_certificate      /usr/local/nginx1.7.11/sslSecret/server.crt;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   /usr/local/nginx1.7.11/html/;
            index  index.html index.htm;
        }
    }

重启nginx,大功告成!
发送https请求:wget "" -S --no-check-certificate 可成功返回想要的m3u8文件。

  1. wget 使用 –no-check-certificate 参数  
  2. curl 使用 -k或者--insecure 参数  

==============================

同事测试中发现的问题:测试发现后台并发访问2000个实际接入成功约1400多个

解决:配置允许运行多个进程;加密算法改为CPU的算法;允许接入连接数;

配置如下:

worker_processes 24;  //启动进程数

worker_cpu_affinity 000000000000000000000001 000000000000000000000010 000000000000000000000100 000000000000000000001000 000000000000000000010000 000000000000000000100000 000000000000000001000000 000000000000000010000000 000000000000000100000000 000000000000001000000000 000000000000010000000000 000000000000100000000000 000000000001000000000000 000000000010000000000000 000000000100000000000000 000000001000000000000000 000000010000000000000000 000000100000000000000000 000001000000000000000000 000010000000000000000000 000100000000000000000000 001000000000000000000000 010000000000000000000000 100000000000000000000000;  //核和进程绑定

worker_connections  10240;  //允许接入连接数

ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;   //加密方式,默认使用的DH算法是低性能的最大原因。改变SSL密码设置

阅读(3314) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~