nginx配置https域名详解

一、背景

由于最近在做小程序,小程序所有的后台请求都要求是https格式的域名,因此,我这里也不得不新配置一个https域名。其中遇到一些坑,也学到不少东西,记录一下。

首先博主用的是阿里云的服务器,使用阿里提供的Symantec免费版 SSL。

二、阿里方面的步骤

1、首先是去阿里的域名管理那边解析出新域名

2、然后去阿里云盾那边,把阿里免费给的SSL证书绑定到域名上。(阿里只会给出一个免费的证书,如果要配置多个https域名的话,就要花钱买了,听说很贵。。)

如图,我们要先按步骤进行申请。申请成功之后就可以下载证书了。申请的过程中可能会出现DNS解析错误,我们只需要按照阿里给出的方法解决即可。(我这里选择的是阿里帮我们生成CSR证书)

3、下载证书,解压之后,我们能看到 .key和.pem文件。

三、服务器方面的步骤

1、首先,我们根据阿里给出的教程,我们需要把下载的.key和.pem文件上传到服务器上。先找到nginx的安装目录。

这里注意下,我本来是通过:

yaml 复制代码
ps  -ef | grep nginx

返回结果包含安装目录
root      2662     1  0 07:12 ?        00:00:00 nginx: master process /usr/sbin/nginx

但是在后面才发现,这个只是nginx程序所在的位置,我们要找的是nginx配置文件所在的目录。在我这里是:/etc/nginx

2、在nginx目录下新建cert目录,把证书拷贝进去

bash 复制代码
1、创建cert
mkdir cert;
2、通过ftp把证书文件传上去
3、赋予权限
chmod 777 -R cert;

3、修改nginx的配置,这里注意下,https用的是443端口,而不是咱们http的80端口:

ini 复制代码
server {
        listen 443;
        server_name aaa.bbb.com(你的域名);
        root 你的项目目录;
        index index.php index.html;
    ssl on;
     ssl_certificate   cert/214482258820159.pem;
     ssl_certificate_key  cert/214482258820159.key;
     ssl_session_timeout 5m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;
    ...

4、修改完成之后,重启nginx即可。重启之后,我们通过xxxx.com即可访问自己的项目。

四、碰到的问题:

1、配置完成之后,重启nginx报错:

rust 复制代码
nginx.serviceJob for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details.

又是这种错误。。大家可以参考下这个博客:
blog.csdn.net/ljfphp/arti...

2、我这里出现这个错误,并不是因为端口被占用的问题,我们按照提示,输入

less 复制代码
systemctl status nginx.service -l

结果:
an 31 10:50:59 online systemd[1]: Starting A high performance web server and a rev......
Jan 31 10:50:59 online nginx[30556]: nginx: [emerg] BIO_new_file("/etc/nginx/cert/2...le)
Jan 31 10:50:59 online nginx[30556]: nginx: configuration file /etc/nginx/nginx.con...led
Jan 31 10:50:59 online systemd[1]: nginx.service: control process exited, code=exit...s=1
Jan 31 10:50:59 online systemd[1]: Failed to start A high performance web server an...er.
Jan 31 10:50:59 online systemd[1]: Unit nginx.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

我根据错误提示发现,这里之所以出错是因为证书文件的原因。系统找不到也打不开cert里面的文件。所以这里记得:

1)cert要在/etc/nginx目录下

2)记得给777权限

3、nignx重启成功之后,还是无法访问

这里问题,我以前碰到过。是nginx通过公网IP无法访问的问题,大家可以参考下我的这篇博客:
blog.csdn.net/ljfphp/arti...

答案:我这里也是因为阿里安全组规则没有配置443端口的原因。我新增了一条安全组规则就可以了。

end

相关推荐
于顾而言5 小时前
【笔记】Go Coding In Go Way
后端·go
qq_172805596 小时前
GIN 反向代理功能
后端·golang·go
follycat12 小时前
2024强网杯Proxy
网络·学习·网络安全·go
OT.Ter15 小时前
【力扣打卡系列】单调栈
算法·leetcode·职场和发展·go·单调栈
探索云原生15 小时前
GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU
ai·云原生·kubernetes·go·gpu
OT.Ter17 小时前
【力扣打卡系列】移动零(双指针)
算法·leetcode·职场和发展·go
码财小子1 天前
k8s 集群中 Golang pprof 工具的使用
后端·kubernetes·go
明月看潮生5 天前
青少年编程与数学 02-003 Go语言网络编程 04课题、TCP/IP协议
青少年编程·go·网络编程·编程与数学
明月看潮生5 天前
青少年编程与数学 02-003 Go语言网络编程 03课题、网络编程协议
青少年编程·go·网络编程·编程与数学
帅气的人1235 天前
thrift idl 语言基础学习
java·开发语言·python·rpc·go·thrfit