docker啟動nginx的ssl配置


前提條件

  1. 一台雲服務器(阿里雲、騰訊雲等的centOS)
  2. 服務器上面要有docker(安裝方法這里不做介紹)
  3. 一個域名
  4. ssl證書(兩個文件:一個key后綴,一個pem后綴;生成方法很多這里不再介紹)

下載最新的nginx的docker image

docker pull nginx:latest

創建目錄 nginx, 用於存放后面的相關東西

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

把我們的靜態HTML頁面放到 /home/nginx/www 文件夾下面;

在創建的 /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;

  

部署nginx

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頁面了,但是還沒完

修改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;
    }

將兩個證書文件拷貝到nginx容器

先進入nginx容器在根目錄創建一個ssl文件夾,用來放證書

docker exec -it aa5badebd38a /bin/bash
cd /
mkdir ssl

開始拷貝證書

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

大功告成啦,重啟完事!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM