事件缘由:
最近几天在安装Nginx和部署SSL证书的时候踩了几个坑,特地记录一下。
由于之前所有的操作均在堡垒机的内网服务器上面,所以下面的过程全部来自回忆。
可能会有疏漏的地方,想起来再进行补充,步骤仅供参考。
开始操作:
首先,切换到root用户键入命令:cat /etc/redhat-release
来查看自己所操作服务器的CentOS版本。(我的是CentOS 7.9)
然后进入到安装Nginx的过程,这里由于服务器已经取到了外网权限,所以就略去一系列手动编译的过程,直接通过yum命令在线安装。
输入命令:yum install nginx -y
,进行安装Nginx。
此时如果报以下错误,是因为本地yum源中没有我们想要的包,那么我们就需要创建一个/etc/yum.repos.d/nginx.repo的文件,新增一个yum源。
[root@centos ~]# yum install nginx -y
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: ***
* extras: ***
* updates: ***
No package nginx available.
Error: Nothing to do
更换yum下载源:
这里我们直接通过以下方法去更换yum源为国内源,我尝试过阿里云和网易提供的下载源但是对应CentOS7版本的系统依然是找不到对应的软件包,所以这里采用了腾讯云的下载源。
配置方法:
①备份系统旧配置文件:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
②下载新的CentOS-Base.repo
到 /etc/yum.repos.d/
(CentOS 5-8版本直接修改下面链接中的数字):
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
③更新缓存:
yum clean all
yum makecache
yum update
PS:此时yum源就更换好了,再次运行第一步的命令:yum install nginx -y
进入安装流程。
安装好Nginx以后,可以输入命令:whereis nginx
来查看Nginx的安装目录。
以下是Nginx的默认路径:
(1) Nginx配置路径:/etc/nginx/
(2) PID目录:/var/run/nginx.pid
(3) 错误日志:/var/log/nginx/error.log
(4) 访问日志:/var/log/nginx/access.log
(5) 默认站点目录:/usr/share/nginx/html
PS:事实上,只需知道Nginx配置路径,其他路径均可在/etc/nginx/nginx.conf
以及/etc/nginx/conf.d/default.conf
中查询到。
上传SSL证书:
我拿到的是四个文件:key,csr,crt,pem。key
是私用密钥openssl格,通常是rsa算法。csr
是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。crt
是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。pem
一般是key
和crt
合并以后的文件。
PS:我们一般用到的是pem和key,在/etc/nginx/
目录下新建ssl
目录然后把需要的文件上传到该目录下。
配置Nginx:
cd /etc/nginx/conf #进入Nginx的配置目录
vi nginx.conf #编辑Nginx配置文件
:set number #显示编辑器行号
i #进入编辑模式
配置文件:
#首先在底部最后一个大括号前面新增一个server{},然后把下面的配置填进去:
server{
listen 8000 ssl; #8000是你要监听的端口号,即域名后面显示的端口号。
server_name domian; #当前服务绑定的域名。
ssl_certificate /etc/nginx/ssl/domian_bundle.pem; #证书路径。
ssl_certificate_key /etc/nginx/ssl/domian.key; #秘钥路径。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_session_timeout 10m;
location / {
proxy_pass http://127.0.0.1:8001/; #后端服务在内网中的真实端口。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;
}
}
然后依次执行以下命令:
按ESC按钮退出编辑模式。
:wq! #强制保存修改后的文件。
cd /usr/sbin #进入Nginx运行目录。
./nginx #运行Nginx
现在访问:https://domian:8000
即可通过反向代理调取http://127.0.0.1:8001
接口提供的服务。
SSL的配置也就顺利完成了~总体来说还是在线安装的过程优于离线安装,毕竟不需要担心编译出错的问题。