Linux学习笔记(2月14日)

4.51 配置nginx的ssl

  SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
  1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2)加密数据以防止数据中途被窃取;
  3)维护数据的完整性,确保数据在传输过程中不被改变。

  1. 申请SSL证书:
    网站:www.wosign.com (沃通)
    免费的:freessl.org
    申请时需要验证域名、在DNS解析中添加一条TXT记录。
  2. 配置SSL
[root@rice01 ~]# mkdir /etc/nginx/ssl/
[root@rice01 ~]# cd /etc/nginx/ssl/
[root@rice01 ssl]# vi bbsca // 将CA证书的内容拷贝到bbsca中
[root@rice01 ssl]# vi bbs.crt // 将证书内容拷贝到bbs.crt中
[root@rice01 ssl]# vi bbs.key // 将私钥内容拷贝到bbs.key中
[root@rice01 ssl]# vi /etc/nginx/conf.d/bbs.riceyoung.com.conf
server {
    listen       443 ssl; // 修改监听端口信息为443 ssl
    server_name  bbs.riceyoung.com;
    ssl on; // 开启ssl
    ssl_certificate /etc/nginx/ssl/bbs.crt; // 定义crt路径
    ssl_certificate_key /etc/nginx/ssl/bbs.key; // 定义私钥路径
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; // 定义ssl协议及版本
[root@rice01 ssl]# systemctl restart nginx
[root@rice01 ssl]# firewall-cmd --add-port=443/tcp --permanent
[root@rice01 ssl]# systemctl restart firewalld
  1. 测试:
    修改本地hosts,将bbs.riceyoung.com指向到192.168.142.131,然后打开浏览器访问https://bbs.riceyoung.com,成功访问则配置SSL成功。
    也可以在/etc/nginx/conf.d/bbs.riceyoung.com.conf进行配置,使客户端在访问http://bbs.riceyoung.com时跳转到https://bbs.riceyoung.com:
server {
    listen 80;
    server_name bbs.riceyoung.com;
    rewrite ^(.*)$ https://${server_name}$1 permanent; 
}

  执行命令:curl -k -H "host:bbs.riceyoung.com" https://192.168.142.131/index.php进行访问测试。

4.52-4.55 php-fpm配置

  Nginx服务配置中,匹配php时需要定义php服务的TCP/IP地址及端口,如果Nginx配置中php的fastcgi_pass定义的内容与php服务的配置文件监听的TCP/IP地址及端口不一致,在访问网站时会出现502:

[root@rice01 conf.d]# cat bbs.riceyoung.com.conf
......
location ~ \.php$ {
        root           /data/wwwroot/bbs.riceyoung.com;
        fastcgi_pass   127.0.0.1:9000; // 此处是Nginx调用php服务的地址和端口
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /data/wwwroot/bbs.riceyoung.com$fastcgi_script_name;
        include        fastcgi_params;
    }
......
[root@rice01 conf.d]# cat /usr/local/php-fpm/etc/php-fpm.d/www.conf
......
[www] // 定义php-fpm的pool name
......
user = php-fpm // 定义php服务的所属主
group = php-fpm // 定义php服务的所属组
......
listen = 127.0.0.1:9000 // 定义php服务的地址和端口,如果此处和bbs.riceyoung.com.conf中fastcgi_pass定义的内容不一致,访问网站时会出现502
......
;listen.owner = php-fpm // 定义调用服务的用户
;listen.group = php-fpm // 定义调用服务的组
;listen.mode = 0660 // 定义socket权限,此处被 ; 注释掉了

  除了可以定义地址和端口,也可以定义socket文件:

[root@rice01 conf.d]# vi bbs.riceyoung.com.conf
......
location ~ \.php$ {
        root           /data/wwwroot/bbs.riceyoung.com;
        fastcgi_pass   unix:/tmp/www.socket; // 除了地址和端口,也可以定义socket文件,要注意写法
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /data/wwwroot/bbs.riceyoung.com$fastcgi_script_name;
        include        fastcgi_params;
    }
......
[root@rice01 conf.d]# vi /usr/local/php-fpm/etc/php-fpm.d/www.conf
......
listen = /tmp/www.socket // 除了定义地址和端口,也可以定义socket文件,但必须和nginx配置文件中的fastcgi_pass保持一致
......
listen.mode = 0666 // 定义socket权限,也可以将listen.owner和listen.group定义为nginx,但一般不这样操作,只需要修改权限即可
......
[root@rice01 conf.d]# /usr/local/php-fpm/sbin/php-fpm -t // 检查语法有没有错误
[root@rice01 ~]# /etc/init.d/php-fpm restart // 重启php服务,也可以reload重载

  php-fpm的其它配置参数:

pm = dynamic // 定义php服务进程为动态模式,静态为static
pm.max_children = 5 // 最大进程数
pm.start_servers = 2 // 启动2个子进程
pm.min_spare_servers = 1 // 空闲时,最少不能少于1个子进程
pm.max_spare_servers = 3 // 空闲时,最多不能多于3个子进程
php_flag[display_errors] = off // 定义页面访问时是否显示报错信息
php_admin_value[error_log] = /var/log/fpm-php.www.log // 定义错误日志的路径,如果使用此功能,还需要给/var/log/fpm-php.www.log设置权限
php_admin_flag[log_errors] = on // 定义记录错误信息的开关
php_admin_value[error_reporting] = E_ALL // 定义错误等级,all或notice
slowlog = /tmp/php.slow // 定义php脚本执行慢的日志路径
request_slowlog_timeout = 1 // 定义执行慢的php脚本超过1s的响应时间就记录日志
php_admin_value[open_basedir] = /data/wwwroot/bbs.riceyoung.com:/tmp // 定义一个php-fpm服务只能在这个路径下活动

  补充:
  在实际的生产环境中,需要禁止phpinfo,防止信息泄露:

# vi /usr/local/php-fpm/etc/php.ini
disable_functions = phpinfo

  定义多个pool:
  在定义多个pool时,要修改php的子配置文件和nginx的子配置文件,定义pool name、定义listen监听的IP或socket文件、定义open_basedir。
  无论是修改php的配置或是修改nginx的配置,修改后都需要重启服务或重载服务。

猜你喜欢

转载自blog.csdn.net/weixin_44527700/article/details/87751659