saowu's Blog

为你的Nginx配置SSL证书

为你的Nginx配置SSL证书
2022-11-23 · 3 min read
其他 Docker 日记

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

0、安装启动Nginx

#启动
docker run -d -p 80:80 -p 443:443 --name nginx-ssl -v /data/cert:/etc/nginx/cert nginx:1.23.1-alpine
# 进入容器
docker exec -it nginx-ssl sh
#/etc/nginx 安装目录
#/usr/share/nginx/html 站点目录

1、 获得证书文件server.crt和私钥文件server.key

CRT 应该是 certificate 的三个字母,其实还是证书的意思。常见于 UNIX 系统,有可能是 PEM 编码,也有可能是 DER 编码,大多数应该是 PEM 编码。

2、 在Nginx的安装目录下创建cert目录,并且将server.keyserver.crt拷贝到nginx的cert目录下。

或者启动容器时挂载在到cert目录下

# nginx容器目录
/etc/nginx # ls -l
total 36
drwxr-xr-x    6 root     root           192 Nov 23 03:12 cert
drwxr-xr-x    1 root     root          4096 Nov 23 02:38 conf.d
-rw-r--r--    1 root     root          1077 Jul 19 15:22 fastcgi.conf
-rw-r--r--    1 root     root          1007 Jul 19 15:22 fastcgi_params
-rw-r--r--    1 root     root          5349 Jul 19 15:22 mime.types
lrwxrwxrwx    1 root     root            22 Oct  6 22:38 modules -> /usr/lib/nginx/modules
-rw-r--r--    1 root     root           648 Jul 19 15:22 nginx.conf
-rw-r--r--    1 root     root           636 Jul 19 15:22 scgi_params
-rw-r--r--    1 root     root           664 Jul 19 15:22 uwsgi_params

3、 配置Nginx中conf.d目录下创建{ssl-name}.conf文件。

修改成如下参数:

#{ssl-name}.conf如下

server {

    listen                  443 ssl;
    listen                  [::]:443 ssl;               #ipv6

    server_name             www.domain.com;             #用户服务器的域名

    ssl_certificate         cert/server.crt;
    ssl_certificate_key     cert/server.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;                     #为了支持TLSv1 TLSv1.1老协议

    location / {
        root        /usr/share/nginx/html;             #站点目录
        index       index.html index.htm;
        #proxy_pass  http://127.0.0.1:8080;              #反向代理到本服务器的8080端口
    }
}

4、 修改完成后保存配置文件,验证配置是否正确。

nginx -t

配置正确,回显信息如下所示:

nginx.conf syntax is ok
nginx.conf test is successful
# 查看当前配置
nginx -T

5、重新载入Nginx配置

nginx -s reload

6、可选:配置80 强制转 443,修改default.conf

修改成如下参数:

#default.conf如下

server {
    listen       80;
    listen       [::]:80;           #ipv6
    server_name  www.domain.com;
    
    rewrite ^(.*)$ https://${server_name}$1 permanent; 
}

推荐:一个配置高性能、安全、稳定的NGINX服务器的最简单方法。

Copyright © 2020 - 2024 saowu. All Right Reserved
Powered by Gridea