欢迎光临
感受代码之美

CENTOS 7在docker环境下安装nginx

docker.jpg

环境

  • CentOS Linux release 7.6.1810 (Core);
  • docker 18.09.6;

安装

根据官方镜像,安装nginx最新版:

 docker container run \
  -d \
  -p 80:80 \
  --rm \
  --name nginx \
  nginx

拷贝配置文件

拷贝配置文件

[[email protected] etc]$ cd /etc
[[email protected] etc]$ sudo docker container cp nginx:/etc/nginx ./

映射网页文件及配置文件

创建目录并映射容器的网页文件:

[[email protected] etc]$ cd /etc/nginx
[[email protected] nginx]$ chown -R michael:www ./
[[email protected] nginx]$ mkdir html

停止容器并重启容器以完成配置文件和网页文件的映射

[[email protected] nginx]$ docker container stop nginx
[[email protected] nginx]$ docker container run \
  --rm \
  --name nginx \
  --volume /etc/nginx/html:/usr/share/nginx/html \
  --volume /etc/nginx:/etc/nginx \
  -p 80:80 \
  -d \
  nginx

测试

/etc/nginx/html下新建index.html,内容如下:

<h1>Hello World</h1>

浏览器中访问,显示上面内容,说明安装成功。

申请证书

这里我申请的是LETSENCRYPT/Certbot,参考:Nginx启用Let’s Encrypt SSL证书 ,使用临时目录验证的方式。

假设你已经将域名解析到服务器,我的配置如下:

server{
    listen 80;
    server_name centos.aitlp.com;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

在cerbot目录下执行:

./certbot-auto certonly --webroot --email [email protected] -w /etc/nginx/html -d centos.aitlp.com

正常的证书已经申请成功,默认路径为/etc/letsencrypt/目录下。

修改nginx配置文件:

server{
    listen 80;
    server_name centos.aitlp.com;
    #告诉浏览器有效期内只准用 https 访问
    add_header Strict-Transport-Security max-age=15768000;
    #永久重定向到 https 站点
    return 301 https://$server_name$request_uri;
}
server {
   #启用 https, 使用 http/2 协议, nginx 1.9.11 启用 http/2 会有bug, 已在 1.9.12 版本中修复.
   listen 443 ssl http2;
   server_name centos.aitlp.com;

   add_header X-Frame-Options DENY;
   #告诉浏览器不要猜测mime类型
   add_header X-Content-Type-Options nosniff;

   #证书路径
   ssl_certificate /etc/letsencrypt/live/centos.aitlp.com/fullchain.pem;
   #私钥路径
   ssl_certificate_key /etc/letsencrypt/live/centos.aitlp.com/privkey.pem;
   #安全链接可选的加密协议
   ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
   #可选的加密算法,顺序很重要,越靠前的优先级越高.
   ssl_ciphers HIGH:!aNULL:!MD5;
   #在 SSLv3 或 TLSv1 握手过程一般使用客户端的首选算法,如果启用下面的配置,则会使用服务器端的首选算法.
   ssl_prefer_server_ciphers on;
   #储存SSL会话的缓存类型和大小
   ssl_session_cache shared:SSL:10m;
   #缓存有效期
   ssl_session_timeout 5m;


   location / {
      root   /usr/share/nginx/html;
      index  index.html index.htm;
   }
}

停止Nginx容器之后,重新启动:

docker container run \
  --rm \
  --name nginx \
  --volume /etc/nginx/html:/usr/share/nginx/html \
  --volume /etc/nginx:/etc/nginx \
  --volume /etc/letsencrypt:/etc/letsencrypt \
  -p 80:80 \
  -p 443:443 \
  -d \
  nginx

第一次学习docker,过程比较菜,后续学习文章会进行改进。

参考:

  1. Nginx 容器教程
转载请注明来源:四个空格 » CENTOS 7在docker环境下安装nginx

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址