目录
2.1、 网景公司(Netscape)设计的主要用于Web的安全传输协议
2.2、 安全套接字 secure socket layer
一、概述
(一)功能
web服务
反向代理
负载均衡
缓存服务
(二)网站模型
epoll
(三)优势
并发高,单机并发高达50000
(四)监听端口
80/tcp
二、安装
(一)扩展
yum保持软件包缓存
vim /etc/yum.conf
将 keepcache=0 改为 keepcache=1
案例
把所有httpd相关软件包放到同一目录
rpm -ivh ./*.rpm
(二)基础配置
1、 关闭防火墙
systemcetl stop firewalld && systemctl disable firewalld
2、 关闭SELinux
setenforce 0
3、 关闭NetworkManager
systemcetl stop NetworkManager && systemctl disable NetworkManager
4、 配置IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
5、 连通性测试 ping
(三)yum安装
1、 低版本
yum install -y epel-release
yum install -y nginx
2、 官方高版本
Nginx官方网站:nginx news
创建并编辑如下文件
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
3、 查看指定软件所有可安装版本
yum list nginx --showduplicates
yum install -y nginx-1.20.0
4、 下载指定版本软件包
yum upgrade nginx-1.22.0 --downloadonly
5、下载路径
/var/cache/yum/x86_64/7/yum源名称
/var/cache/yum/x86_64/7/nginx-stable/packages
6.yum源拓展命令
清理缓存 yum clean all
快速生成缓存 yum makecache fast
yum列表 yum list
快速查看指定源 yum list | grep nginx
(四)源码安装
前文已讲述,在此不过多追述
三、目录结构
查看nginx安装后生成的目录及文件 rpm -ql nginx
/etc/nginx/ Nginx安装主目录
/usr/bin/ Nginx更新命令
/usr/sbin/ Nginx启动命令
/usr/share/nginx/ 网页文档根目录
/var/lib/nginx 缓存和临时文件
/var/log/nginx/ 日志文件
四、命令
nginx-upgrade 更新命令
nginx 启停命令
选项
-c nginx启动时指定配置文件位置
案例
cp /etc/nginx/nginx.conf /opt/
修改/opt/nginx.conf文件
PID文件位置
端口号
访问文档根目录
-s stop 停止服务
-s reload 不停止服务,平滑加载配置文件
-t 测试配置文件并返回信息
五、主配置文件
主配置文件存放位置 /etc/nginx/nginx.conf
user nginx; 运行用户
worker_processes 进程数量
error_log 错误日志
pid 进程ID
events { worker_connections } 定义每个工作进程的最大连接数
http{} web网站配置块
include /etc/nginx/mime.types; 支持的文件解析类型
log_format 日志格式配置
access_log 访问日志路径
include /etc/nginx/conf.d/*.conf; 引用其他文件到当前文件
vim /etc/nginx/conf.d/default.conf
server { } 定义web站点配置
listen 监听端口
server_name 域名
location 指定访问的路径及默认文档
root 访问文档根目录
index 默认文档
六、配置
(一)单网站配置
启动nginx即可
(二)虚拟主机配置
基于不同端口
vim /etc/nginx/conf.d/default.conf
更改配置文件
mv default.conf wjy1.conf
cp-p wjy1.conf wjy2.conf
编辑wjy1.com配置文件
编辑wjy2.com
进入主配置文件vim /etc/nginx/nginx.conf
注释掉access_log行
重启服务
systemctl restart nginx
进入目录 cd /usr/share/nginx/html/ 下创建目录wjy1 wjy2
mkdir wjy1 wjy2
cp index.html wjy1
cp index.html wjy2
基于不同IP地址
基于不同域名
(三)SSL加密配置
1、加密类型
1.1、 对称加密
秘钥相同,不安全
1.2、 非对称加密
公钥:所有人都可以知道,用来对使用对等私钥加密的数据进行解密
私钥:只有自己知道,用来对使用对等公钥加密的数据进行解密
数据加密:使用公钥加密,保证数据一致性(完整性)
数字签名:使用私钥加密,保证发送者的确定性
2、SSL概述
2.1、 网景公司(Netscape)设计的主要用于Web的安全传输协议
2.2、 安全套接字 secure socket layer
2.3、 通过证书来实现,证书颁发机构(CA),PKI认证
2.4、 传输过程
首先发送数字证书,获取到可信的public key
通过public key发送对称秘钥,接收方用私钥解密。
通信双方使用仅仅对方可知的对称秘钥进行加密传输
2.5、 在https协议中的监听端口 443/tcp
2.6、 https的特点
通过数字证书确认服务器身份,获知服务器公钥
将对称加密密钥通过非对称进行传输沟通
之后的通信过程采取对称加密
3、openssl命令
3.1、 概述
3.1.1、 openssl
openssl程序是一个命令行工具。用于使用OpenSSL加密库的加密函数。它可以用于创建和管理私钥、公钥和参数、公钥密码操作、创建X.509证书、CSR和CRL、消息摘要的计算、密码加密和解密、SSL/TLS客户端和服务器测试、处理S/MIME签名或加密邮件、时间戳请求、生成和验证
3.1.2、 OpenSSL
OpenSSL是一个实现安全套接字层的加密工具包(SSL v2/v3)和传输层安全(TLS v1)网络协议以及他们要求的相关密码标准。
genrsa:生成私钥文件
-out :指定生成的证书请求或者自签名证书名称
req:用来生成自签证书
-new :说明生成证书请求文件
-key :指定已有的秘钥文件生成秘钥请求,只与生成证书请求选项-new配合。
x509 :说明生成自签名证书
-req:用来生成自签证书
-in:读取文件
-signkey:读取私钥文件
4、证书生成
mkdir -p /usr/local/pki/nginx
生成私钥文件(包含公钥和私钥)
cd /usr/local/pki/nginx
openssl genrsa -out nginx.key
查看私钥文件:openssl rsa -in nginx.key -text
生成证书请求文件
cd /usr/local/pki/nginx
openssl req -new -key nginx.key -out nginx.csr
生成证书
cd /usr/local/pki/nginx
openssl x509 -req -days 3650 -in nginx.csr -signkey nginx.key -out nginx.crt
查看证书:
openssl x509 -req -days 3650 -in nginx.csr -signkey ./private/nginx.key -text
5、nginx配置SSL
nginx.conf中去掉ssl配置注释,修改证书请求文件及证书文件的名称。
6、 完整操作流程
6.1、 配置基础环境
6.2、 编译安装nginx
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http-stub-status_module
上述命令 "./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http-stub-status_module" 是用于配置 Nginx 编译和安装的命令。
具体解释如下:
"./configure" 是运行 Nginx 的配置脚本命令。
"--prefix=/usr/local/nginx" 指定了安装路径前缀为 "/usr/local/nginx",即将 Nginx 安装到该目录下。
"--with-http_ssl_module" 是启用了 Nginx 的 SSL 模块,用于支持通过 SSL/TLS 进行加密的 HTTPS 通信。
"--with-http-stub-status_module" 是启用了 Nginx 的状态模块,用于提供服务器的简单状态信息,例如连接数、请求信息等。
此命令的执行是为了根据指定的配置选项进行编译和安装 Nginx,并根据需要启用相应的模块,以便在安装后的 Nginx 服务器中获得相应的功能和特性。
yum补全缺失的依赖
make && make install完成编译安装
6.3、 生成、查看私钥文件
openssl genrsa -out nginx.key 1024 生成私钥文件(包含公钥和私钥)
openssl rsa -in nginx.key -text 查看私钥文件
openssl req -new -key /nginx.key -out nginx.csr 生成证书请求文件
Country Name (2 letter code) [XX]:cn
国家名称(两个字母的代码):cn(中国)
State or Province Name (full name) []:bj州或省份名称:bj(北京)
Locality Name (eg, city) [Default City]:bj地点名称:bj(北京)
Organization Name (eg, company) [Default Company Ltd]:bj组织名称:bj(北京)
Organizational Unit Name (eg, section) []:bj组织单位名称:bj(北京)
Common Name (eg, your name or your server's hostname) []:www.wang.com通用名称:www.wang.com(您的名称或服务器的主机名)
Common Name (eg, your name or your server's hostname) []:www.wang.com (必须与nginx的域名一致)
Email Address []: 电子邮件地址:您的电子邮件地址Please enter the following 'extra' attributes
请输入以下“额外”属性
to be sent with your certificate request与您的证书请求一起发送
A challenge password []:挑战密码:用于进一步验证您的身份的密码(可选)
An optional company name []:公司名称:您的公司名称(可选)
6.4、 更改配置文件
vim /usr/local/nginx/conf/nginx.conf
取消pid的注释
取消注释日志格式
将https server下的server全部取消注释,并进行更改
创建软链接
ln -s /usr/local/nginx/sbin/nginx /usr/sbin
编辑配置文件
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /usr/local/nginx/logs/nginx.pid)"[Install]
WantedBy=multi-user.target
注意:上述配置文件所指目录位置(路径),需和/usr/local/nginx/conf/nginx.conf关联起来
systemctl daemon-reload
systemctl daemon-reload是一个systemctl命令,用于重新加载systemd的守护进程配置文件。当我们对systemd的守护进程配置文件进行了修改后,需要使用这个命令来重新加载配置,使得修改生效。
systemctl -anput | grep nginx 查看监听