看起来大家庭关注这个,刚发了一个《Nginx 服务器 SSL 证书安装部署(Windows)》,点击量还挺高,那就再发一个linux下的过程吧。希望能对大家有所帮助。
照例,先放官方废话:
说明
1、本文档以证书名称 cloud.tencent.com
为例。
2、Nginx 版本以 nginx/1.18.0
为例。
3、当前服务器的操作系统为 CentOS 7,由于操作系统的版本不同,详细操作步骤略有区别。
4、安装 SSL 证书前,请您在 Nginx 服务器上开启 HTTPS 默认端口 443
,避免证书安装后无法启用 HTTPS。具体可参考 服务器如何开启443端口?
5、SSL 证书文件上传至服务器方法可参考 如何将本地文件拷贝到云服务器。
这里需要说一下注意事项。说明里面443端口是在linux防火墙里面开的,但是需要注意的是要开放防火墙的话一定要同时开放SSH,也就是在防火墙配置文件里面同时写上SSH的端口,否则你用XShell这些远程工具连服务器的时候,你就会哭了。
第一步,当然是安装nginx了。
其实在线安装nginx比较方便,大家自然可以去查,但是在线安装nginx在有些系统上他就是出各种各样的幺蛾子,所以我在这里主张离线安装了。
用xshell创建个目录usr/local/java,然后给这个文件夹赋权,这就不详细说了,自己去查xshell和linux的操作就好了。
然后用xshell带的文件上传工具把下载的nginx-1.9.9.tar.gz放在这个目录下。具体版本自己根据需要自己去nginx官网上找找。ngxin下载地址:nginx news
然后解压
tar -zxvf nginx-1.9.9.tar.gz
3、切换到cd /usr/local/java/nginx-1.9.9/下面执行命令:
./configure
make
makeinstall
然后等待安装完成就好了。
第二步,将ssl的文件通过xshell的上传工具放在nginx的根目录下。
将已获取到的 cloud.tencent.com_bundle.crt
证书文件和 cloud.tencent.com.key
私钥文件从本地目录拷贝到 Nginx 服务器的 /etc/nginx
目录(此处为 Nginx 默认安装目录,请根据实际情况操作)下。
第三步,配置nginx的配置文件nginx.conf:
如找不到以下内容,可以手动添加。可执行命令 nginx -t ,找到nginx的配置文件路径。
如下图示例:
此操作可通过执行 vim /etc/nginx/nginx.conf
命令行编辑该文件。
不过,我觉得linux的命令行编辑对新手来说很不友好,所以我喜欢在windows本机上编辑好了再传上去覆盖。
由于版本问题,配置文件可能存在不同的写法。例如:Nginx 版本为 nginx/1.15.0
以上请使用 listen 443 ssl
代替 listen 443
和 ssl on
。
配置内容参考下面的内容:
server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name cloud.tencent.com;
#请填写证书文件的相对路径或绝对路径
ssl_certificate cloud.tencent.com_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key cloud.tencent.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root html;
index index.html index.htm;
}
}
第四部:验证和启动nginx
通过执行以下命令验证配置文件问题。
nginx -t
若存在,请您重新配置或者根据提示修改存在问题。
若不存在,请执行下面的步骤:
nginx -s reload
就是重新启动nginx。
重载成功,即可使用 https://cloud.tencent.com
进行访问。当然,还要看看你的防火墙是否开放正确。此外,还要看看云环境控制台上的安全组有没有开放相应端口。没开放都有可能会引起访问不到。