【docker】docker-compose 离线环境下安装 nginx
·
docker安装nginx
一、制作离线镜像文件
1、下载离线镜像
需要在可以访问互联网的环境中下载所需的 Docker 镜像
docker pull redis:6.2.20

2、制作离线镜像
1、查看当前电脑镜像文件
docker images
2、镜像文件打包
docker save -o redis.6.2.20.tar redis:6.2.20

3、离线文件下载至本地电脑

二、安装离线镜像文件
1、上传ngixn离线镜像文件到服务器上
链接:https://pan.baidu.com/s/1-HS_wszZvblmuwKKaxD_ng
提取码:6666
2、docker加载镜像文件到本地镜像仓库中
# 加载命令
docker load -i nginx-1.2.31.tar
# 查询是否加载成功
docker images | grep nginx

3、配置docker-compose.yml文件(docker容器里面的目录请勿修改)
1、/home/cttic/nginx/* 是自己的目录
version: '3'
services:
nginx:
#host代表使用本机网络
network_mode: "host"
#容器异常重启
restart: always
#容器名字
container_name: docker_nginx_1
#使用的镜像,使用docker images查看在docker的镜像名称,自行更改
image: nginx:stable
#设置时区
environment:
TZ: Asia/Shanghai
#端口号,根据配置 自行更改
ports:
- "80:80"
#挂载容器内文件到宿主机,自行根据实际情况更改
volumes:
#日志文件夹,可以比较随意,是根据nginx的配置文件中定义的
- /home/cttic/dockerConfig/nginx/logs:/data/nginx/logs
#nginx配置文件,/etc/nginx/nginx.conf 是nginx的config不覆盖映射目录,不能修改
- /home/cttic/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
# html文件夹,/usr/share/nginx/html是nginx的HTML覆盖映射目录,不能修改
- /home/cttic/nginx/conf/html:/usr/share/nginx/html
#特权模式运行
privileged: true
4、nginx.conf文件(以https写协议为例子)
user nginx; # 以 `nginx` 用户身份运行进程
worker_processes auto; # 自动根据 CPU 核心数设置工作进程数(推荐)
worker_rlimit_nofile 65535; # 每个工作进程的最大文件描述符数(防止“too many open files”错误)
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll; # 使用 Linux 的高效 epoll 事件模型(适用于高并发)
multi_accept on; # 允许一次接受所有新连接(提升吞吐量)
accept_mutex off; # 禁用进程间接受连接的互斥锁(减少锁竞争)
worker_connections 4000; # 每个工作进程的最大连接数(需根据内存调整)
}
http {
include mime.types; # 加载 MIME 类型定义文件
default_type application/octet-stream; # 默认二进制流类型(兜底配置)
access_log /data/nginx/logs/access.log ;
error_log /data/nginx/logs/error.log ;
sendfile on; # 启用零拷贝文件传输(提升静态文件传输效率)
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; # 保持长连接的超时时间(秒)
client_header_buffer_size 512k; # 客户端请求头缓冲区大小
large_client_header_buffers 4 512k; # 大请求头缓冲区配置(防止 414 错误)
client_max_body_size 300m; # 允许的最大请求体大小(如文件上传)
gzip on; # 启用 Gzip 压缩
gzip_min_length 1k; # 最小压缩文件大小
gzip_buffers 4 16k; # 压缩缓冲区
gzip_http_version 1.1; # 压缩的 HTTP 协议版本
gzip_comp_level 9; # 压缩级别(1-9,9 最强但 CPU 占用高)
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json; # 压缩的 MIME 类型
gzip_disable "MSIE [1-6]\."; # 禁用 IE6 的 Gzip(避免兼容性问题)
gzip_vary on; # 根据 `Accept-Encoding` 头返回压缩内容
server {
listen 444 ssl http2;
server_name *.baidu.*;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods *;
add_header Access-Control-Allow-Headers 'Origin,Accept,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
#填写证书文件名称
ssl_certificate /opt/cert/111.pem;
#填写证书私钥文件名称
ssl_certificate_key /opt/cert/111.key;
ssl_session_timeout 5m;
#表示使用的加密套件的类型
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
#解决跨域问题-预检请求直接返回成功
if ($request_method = 'OPTIONS') {
return 200;
}
# 访问根目录
location / {
expires -1;
root /opt/;
index index.html index.htm;
}
# 前端地址
location /yn-work-pc/ {
alias /opt/yn-work-pc/dist/;
expires -1;
index index.html index.htm;
autoindex on;
try_files $uri $uri/ /yn-work-pc/;
}
# 后端接口
location /yn-hs-api/ {
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
# webScoket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://127.0.0.1:9999/;
}
}
}
}
5、通过docker-compose构建nginx
#来到docker-compose文件目录下,执行构建nginx命令
docker-compose -f ./docker-compose.yml up nginx --build -d
#查询docker进程运行命令,状态为 up 即是正常运行
docker ps | grep nginx

6、访问nginx,测试效果
这里选择了放了一张静态图片来显示效果
6.1、查看nginx日志

6.2、服务器目录


更多推荐
所有评论(0)