nginx绑定SSL证书

1、服务器环境

centos7.9、docker

docker下nginx已经部署并启动,监听80及443端口。

nginx多域名绑定已经测试完成,参考我另外一个文章 nginx 绑定多个域名

ssl证书已经申请完成,参考我另外一个文章 阿里云免费SSL证书申请

ps:本次所用环境及nginx配置文件都是沿用 nginx 绑定多个域名,但是由于此次需要443端口,所以我重新运行了新的容器,以便监听443端口

2、配置

2.1 nginx.conf文件

我只申请了test1.xxxxx.cn的证书,所以配置文件我也只配置了这个证书。

worker_processes  1;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;



    sendfile        on;


    keepalive_timeout  65;

    server {
        listen       80;#端口
        server_name  localhost;#访问地址、域名
               
        
        location / {     #匹配访问url规则
            root   /usr/share/nginx/html/html/;       #指向路径   实际访问路径为 D:/t2/html/myhtml/  两个拼接的
        }
    }
    
    
    # 配置 server
    server {
        listen 80;
        server_name xxxxx.cn test1.xxxxx.cn; # 支持 www 和 non-www 两种访问方式
        location / {
            proxy_pass http://172.00.000.000:8003; # 将其转发到本地的 8003 端口
        }
    }
 
    # 配置另一个 server
    server {
        listen 80;
        server_name test2.xxxxx.cn;
        location / {
            proxy_pass http://172.00.000.000:8004; # 将其转发到本地的 8004 端口
        }
    }
    
    # 配置ssl server
    server {
        listen 443 ssl;
        server_name test1.xxxxx.cn;
        ssl_certificate /etc/nginx/ssl/test1.xxxxx.cn.pem;
        ssl_certificate_key /etc/nginx/ssl/test1.xxxxx.cn.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        location / {
            # proxy_set_header X-Real-IP $remote_addr;
            # proxy_set_header Host $http_host;
            # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # root /usr/share/nginx/html;
            # index index.html index.htm;
            proxy_pass http://172.00.000.000:8003; # 将其转发到本地的 8003 端口
        }
    }

}

一般来说如果配置了443,都要把80重定向到443,这个需要在nginx.conf添加一段配置即可

server {
    listen 80;
    server_name aaa.printy.cn;
    rewrite ^(.*)$ https://${server_name}$1 permanent; 
}

2.2 docker

mkdir -p /data/nginx/ssl
docker run \
--name nginx230829 \
-p 80:80 -p 443:443 \
-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/www/:/usr/share/nginx/html/ \
-v /data/nginx/logs/:/var/log/nginx/ \
-v /data/nginx/ssl/:/etc/nginx/ssl/ \
-v /data/nginx/conf/:/etc/nginx/conf.d \
--privileged=true -d --restart=always nginx

这块不多说了,就是运行nginx的容器,然后挂载配置文件,其中ssl文件夹在宿主机创建好以后,需要把ssl文件传上来。

2.3 重启nginx

重启以后,访问test1的域名,可以看到证书已经生效。

posted @ 2023-08-29 18:00  PrintY  阅读(60)  评论(0编辑  收藏  举报