nginx配置ssl实现网站https访问
ChrisXie Lv5

ssl证书配置

HTTP协议以明文方式发送内容,不提供任何方式的数据加密。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

1,这里用的是阿里云免费的ssl证书,在证书控制台下载Nginx版本证书,下载到本地即可解压生成两个配置文件:.crt文件:是证书文件,crt是pem文件的扩展名 .key文件:证书的私钥文件

点击这里购买阿里云服务器一年只需要99元


2,在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为a.key


3,打开 Nginx 安装目录下 conf 目录中的 nginx.conf 文件,找到并且修改配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
server {
#侦听443端口,这个是ssl访问端口
listen 443;
#定义使用 访问域名
server_name XXX.com;
#定义服务器的默认网站根目录位置
root /web/www/website/dist;

#设定本虚拟主机的访问日志
access_log logs/nginx.access.log main;

# 这些都是腾讯云推荐的配置,直接拿来用就行了,只是修改证书的路径,注意这些路径是相对于/etc/nginx/nginx.conf文件位置 注意:cert/是放置ssl证书的位置
ssl on;
ssl_certificate cert/1_XXX.com_bundle.crt;
ssl_certificate_key cert/2_XXX.com.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 /web/www/website/dist;
#定义首页索引文件的名称
index index.html;
}

#静态文件,nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
#过期30天,静态文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}

#禁止访问 .htxxx 文件
# location ~ /.ht {
# deny all;
#}

}

4,需要注意的是当访问http访问低需要监听80端口去转换至https访问

1
2
3
4
5
6
7
8
server
{
# 80端口是http正常访问的接口
listen 80;
server_name XXX.com www.XXX.com;
# 在这里,我做了https全加密处理,在访问http的时候自动跳转到https
rewrite ^(.*) https://$host$1 permanent;
}

这里需要注意下,导入新的证书后需要重启而不是重载,nginx -s reload是普通修改配置重载

1
2
3
4
# 停止nginx
nginx -s stop
# 启动
nginx

重启完后再次访问自己的网站监测是否添加上了https

nginx操作命令

1
2
3
4
5
nginx -t # 测试配置文件
nginx -s reload # 修改配置后重载生效
nginx -s reopen # 重新打开日志文件
nginx -s stop # 快速停止
nginx -s quit

查看nginx进程ps -ef | grep nginx

Nginx配置虚拟主机(多网站)

由于一个nginx可能需要多个网站或者多个域名使用,nginx配置可以参考这里


如果新手或者喜欢界面化操作可以使用宝塔会快捷很多


 评论
相关文章
标签云 更多