daemon与service:
系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面),这个服务就称为service。而实现这个service的程序我们就称它为daemon。实现某个服务是需要一个daemon在后台中运行,没有这个daemon就不会有service。
依据daemon的启动与管理方式来区分:
stand alone:daemon启动并加载到内存后一直占用内存和系统资源。响应速度较快。
super daemon统一管理的服务:有来自客户端的请求时,super daemon才唤醒相应的服务,当客户端请求结束后,被唤醒的这个服务也会关闭并释放系统资源。反应慢一些。
在linux下编写daemon
1、编写服务的执行文件
#vim /root/testservice
echo "test success"
#chmod +x /root/testservice
2、编写启动服务脚本
#vim /etc/init.d/myservice
#!/bin/sh
#在35级别,启动优先级为80(/etc/rc3.d/下面S80:开头),停止优先级为90(K开头)
#chkconfig:35 80 90
. /etc/rc.d/init.d/functions
daemon /root/testservice
# chmod +x /etc/init.d/myservice
3、添加/删除服务
#chkconfig --[add|del] myservice
4、启动服务
#/etc/init.d/myservice
nginx中https设置
https://segmentfault.com/a/1190000002866627
优化https
https://vincent.bernat.im/en/blog/2011-ssl-session-reuse-rfc5077
listen 443;
ssl on;
ssl_certificate /usr/local/openresty/nginx/conf/crt/shejiben.crt;
ssl_certificate_key /usr/local/openresty/nginx/conf/crt/shejiben.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:100m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
解析
ssl_certificate证书其实是个公钥,它会被发送到连接服务器的每个客户端,ssl_certificate_key私钥是用来解密的,所以它的权限要得到保护但nginx的主进程能够读取。当然私钥和证书可以放在一个证书文件中,这种方式也只有公钥证书才发送到client。
ssl_protocols指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
ssl_ciphers选择加密套件,不同的浏览器所支持的套件(和顺序)可能会不同。这里指定的是OpenSSL库能够识别的写法,你可以通过 openssl -v cipher 'RC4:HIGH:!aNULL:!MD5'(后面是你所指定的套件加密算法) 来看所支持算法。
ssl_prefer_server_ciphers on设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
https优化参数
ssl_session_cache shared:SSL:10m; : 设置ssl/tls会话缓存的类型和大小。如果设置了这个参数一般是shared,buildin可能会参数内存碎片,默认是none,和off差不多,停用缓存。如shared:SSL:10m表示我所有的nginx工作进程共享ssl会话缓存,官网介绍说1M可以存放约4000个sessions。 详细参考serverfault上的问答ssl_session_cache。
ssl_session_timeout : 客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m即30分钟甚至4h。
设置较长的keepalive_timeout也可以减少请求ssl会话协商的开销,但同时得考虑线程的并发数了。