安装依赖库

yum -y install gcc pcre-devel zlib zlib-devel openssl openssl-devel curl

下载安装包并解压

curl -O http://nginx.org/download/nginx-1.1.15.tar.gz

方法2:离线下载后上传至服务器 点击下载

# 解压
tar -zxvf /***/nginx-1.15.5.tar.gz

# 进入到解压后的目录
cd ***/nginx-1.15.5

安装Nginx

#./configure 默认安装位置为 /usr/local/nginx,可以使用参数 --prefix=/usr/nginx 进行修改

# 指定安装位置/usr/nginx 并配置ssl模块
./configure --prefix=/usr/nginx --with-http_ssl_module

# 使用make编译
make

# 使用make install 安装
make install

# 查看安装的模块
/usr/nginx/sbin/nginx -V

# 出现 --with-http_ssl_module 说明ssl模块已安装
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module

设置开机自启

新建并编辑nginx.service文件 vi /etc/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/nginx/sbin/nginx
ExecReload=/usr/nginx/sbin/nginx -s reload
ExecStop=/usr/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

常用命令如下:

  • 启动nginx:systemctl start nginx
  • 关闭nginx:systemctl stop nginx
  • 设置开机自启:systemctl enable nginx
  • 关闭开机自启:systemctl disable nginx
  • 查看运行状态:systemctl status nginx

HTTPS

HTTP与HTTPS

  • HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  • HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

主要区别:

  • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

配置HTTPS

申请免费的SSL证书

当然也可以自行购买一个提供免费HTTPS证书申请的网站

不建议使用OpenSSL生成的证书

  • openssl生成的baiSSL证书也叫自签名SSL证书,签发很随意,任何人都可以签发,易被黑客仿冒利用。
  • 不是由正规的CA机构颁发的,所以不受浏览器的信任。
  • 而付费的SSL证书,是由受信任的CA机构颁发的,申请时会对域名所有权和企业相关信息进行验证,安全级别是比较高的,而且备受各大浏览器的信任。

部署证书

  • 下载申请好的 ssl 证书文件压缩包到本地并解压(这里是用的 pem 与 key 文件,文件名可以更改)
  • 在 nginx 目录新建 cert 文件夹存放证书文件
# 进入到Nginx目录
cd /usr/local/nginx

# 创建cert文件夹
mkdir cert
  • 将pem 与 key这两个文件上传至服务器的/usr/local/nginx/cert目录里

配置nginx.conf

nginx 1.15 以上版本

server {
listen 443 ssl; # nginx 1.15以上版本 监听443端口(https默认端口)
server_name chensir.ink; #填写绑定证书的域名
# ssl on; nginx 1.15以上版本 一定要注释掉
ssl_certificate /usr/nginx/cert/cert.pem; #填写你的证书所在的位置
ssl_certificate_key /usr/nginx/cert/cert.key; #填写你的key所在的位置

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置
ssl_prefer_server_ciphers on;

location / {
root 网站目录; # 对应填写网站目录的绝对路径
index index.html index.htm;
}
}

进行http80端口的重定向配置

server {

listen 80;

server_name chensir.ink;#填写绑定证书的域名

rewrite ^ https://$http_host$request_uri? permanent; # 将http转到https

}

重启Nginx

PS:如果之前部署了Nginx只是在其基础上安装SSL模块那么一定要重启Nginx服务,不然https是不会生效的(不要问我为什么写备注,都是眼泪😅)