提示:
记得开启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;
}
}