nginx https 配制

1、前置条件

ssl证书(两个文件:一个key后缀,一个pem后缀;生成方法很多这里不再介绍);docker环境

2、docker pull nginx:latest

3、创建目录 nginx, 用于存放后面的相关东西

mkdir -p /home/nginx/www /home/nginx/logs /home/nginx/conf

把我们的静态HTML页面放到 /home/nginx/www 文件夹下面;

4、在创建的 /home/nginx/conf 文件夹下面创建一个叫 nginx.conf 的文件如下:

user  nginx;

worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    #gzip  on;
 
    include /etc/nginx/conf.d/*.conf;
}
5、docker run -d -p 80:80 -p 443:443 --name nginx-server -v /home/nginx/www:/usr/share/nginx/html -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/logs:/var/log/nginx nginx

命令说明:

  • -p 80:80: 将容器的 80 端口映射到主机的 80 端口。

  • -p 443:443: 将容器的 80 端口映射到主机的 443 端口。
  • --name nginx-server:将容器命名为 nginx-server。

  • -v /home/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。

  • -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。

  • -v /home/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

 启动之后便可以通过域名访问到我们的HTML页面了,但是还没完

6、修改nginx.conf

在我们刚刚创建的 nginx.conf 文件里面插入以下内容:(注意先不要重启)

server {

    listen       443 ssl;
    server_name  fightingtop.cn www.fightingtop.cn;
    root         /usr/share/nginx/html;
    ssl_certificate      /ssl/certificate.pem;
    ssl_certificate_key  /ssl/2832429_fightingtop.cn.key;
    ssl_session_timeout  5m;
    ssl_session_cache    shared:SSL:1m;
    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;
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
 
server {
    listen 80;
    server_name fightingtop.cn www.fightingtop.cn;
    rewrite ^ https://$host$1 permanent;
}
7、将两个证书文件拷贝到nginx容器

先进入nginx容器在根目录创建一个ssl文件夹,用来放证书

docker exec -it aa5badebd38a /bin/bash<br>cd /<br>mkdir ssl

docker cp /home/ssl/certificate.key aa5badebd38a:/ssl/

docker cp /home/ssl/certificate.pem aa5badebd38a:/ssl/

posted @ 2021-01-14 15:16  夜夜漫笔  阅读(143)  评论(0编辑  收藏  举报