docker安装nginx1.20.0、配置SSL

提示:记得开启443、80端口,配置ssl记得申请证书,请先看一下配置文件和配置文件的


docker安装nginx

1、拉去ninx镜像

docker pull nginx:nginx:1.20.0

2、创建挂载目录

mkdir -p /docker/nginx/{conf,conf.d,html,logs,ssl}

3、运行容器

docker run --name ly-nginx -p 80:80 -p 443:443 -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx/html:/usr/share/nginx/html -v /docker/nginx/logs:/var/log/nginx -v /docker/nginx/ssl:/etc/nginx/ssl --privileged=true -d nginx:1.20.0

# 运行容器(命令换行展示)
docker run \
--name ly-nginx \
-p 80:80 \
-p 443:443 \
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/html:/usr/share/nginx/html \
-v /docker/nginx/logs:/var/log/nginx \
-v /docker/nginx/ssl:/etc/nginx/ssl \
--privileged=true \
-d \
nginx:1.20.0

4、参数说明

--name ly-nginx   容器名称。
-p 80:80        端口进行映射,将本地 80 端口映射到容器内部的 80 端口。
-p 8081:8081      转发端口
-p 443:443        https
-v                表示将主机目录与容器目录之间进行共享(挂载)
-v                (1) nginx.conf配置文件 挂载 文件中添加 /etc/nginx/conf.d/*.conf;
-v                (2) conf.d 文件夹挂载  在主机/docker/nginx/conf.d中创建default.conf
-v                (3) 项目目录挂载
-v                (4) 日志目录挂载
-v                (5) ssl证书目录挂载
--privileged=true 容器内部对挂载的目录拥有读写等特权
-d nginx: 设置容器在在后台一直运行。


# nginx 配置信息在容器中的位置
配置文件位置:/etc/nginx
            nginx的配置文件nginx.conf在docker中被分成两个文件
                                /etc/nginx/nginx.conf
                                     nginx.conf 中添加 include /etc/nginx/conf.d/*.conf;
                                /etc/nginx/conf.d/default.conf
项目位置:/usr/share/nginx/html
日志位置:/var/log/nginx

# 备份nginx镜像
docker save REPOSITORY:TAG -o /root/[名字].tar

# 导入备份的镜像
docker load -i [名字].tar

配置文件

配置文件中的路径 基本上都是容器中的路径,而不是主机中的路径

nginx.conf

# (如下配置中 如果要改成ip访问就要把default.conf配置中的第一个server去掉 还有就是吧域名换成ip)

#主模块指令,指定Nginx Worker进程运行用户以及用户组
#user  nginx;
#主模块指令,指定Nginx要开启的进程数,建议设置成和cpu的数量相等
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#事件指令,设定Nginx的工作模式及连接数上限
events {

    #指定Nginx的工作模式;Nginx工作模式:select、poll、kqueue、epoll、rtsig和/dev/poll
    #use  epoll; #epoll工作模式是首选

    #定义Nginx每个进程的最大连接数,默认是1024
    worker_connections  1024;
}


#HTTP服务器配置
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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf; #注意:记得写镜像对应的路径
}

default.conf

server {  # 这个server 配置不能ip访问
    listen 80 default;
    server_name _;
    return 404; 
} 


#server虚拟主机配置
server {

     #监听端口号
     listen       80;
     #域名:可有多个   支持种类:通配符名称、正则表达式名称、IP、localhost、其他(_、@)
     server_name  meishibiexuejava.cn www.meishibiexuejava.cn;

     #charset koi8-r;

     #access_log  logs/host.access.log  main;


     #location URL匹配配置
     #配置根目录转发到本机目录位置
     location / {
	 root   /usr/share/nginx/html; #注意:记得写镜像对应的路径,可别写卷物理路径
         index  index.html;
     }

}

SSL证书配置

ssl证书配置后路径的转发 就在监听443端口的server中配置转发

nginx.conf

#主模块指令,指定Nginx Worker进程运行用户以及用户组
#user  nginx;
#主模块指令,指定Nginx要开启的进程数,建议设置成和cpu的数量相等
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#事件指令,设定Nginx的工作模式及连接数上限
events {

    #指定Nginx的工作模式;Nginx工作模式:select、poll、kqueue、epoll、rtsig和/dev/poll
    #use  epoll; #epoll工作模式是首选

    #定义Nginx每个进程的最大连接数,默认是1024
    worker_connections  1024;
}


#HTTP服务器配置
http {

    #设定mime类型
    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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf; #注意:记得写镜像对应的路径
}

default.conf

server {  # 这个server 配置不能ip访问
    listen 80 default;
    server_name _;
    return 404; 
} 


#server虚拟主机配置
server {

     #监听端口号
     listen 80;
     #域名:可有多个   支持种类:通配符名称、正则表达式名称、IP、localhost
     server_name  meishibiexuejava.cn www.meishibiexuejava.cn;

     #charset koi8-r;

     #access_log  logs/host.access.log  main;

     rewrite ^(.*)$  https://$host$1 permanent; # 强制https

     #location URL匹配配置
     #配置根目录转发到本机目录位置
     location / {
	 root   /usr/share/nginx/html; #注意:记得写镜像对应的路径,可别写卷物理路径
         index  index.html;
     }

    #开启error_page
    error_page  404 /404.html;
    
    location = /404.html {
        root /usr/share/nginx/html;  # 在此目录下添加自定义的404.html
    }
    
    location ~ .*\.(gif|jpg|jpeg|png)$ {
           root /usr/share/nginx/html;
    }

}

server {
    listen 443 ssl;

    server_name  meishibiexuejava.cn www.meishibiexuejava.cn;    #域名

    # 增加ssl (默认会添加 /etc/nginx/ )
    ssl_certificate ssl/5643380_meishibiexuejava.cn.pem;
    ssl_certificate_key ssl/5643380_meishibiexuejava.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;
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值