相关资料
【官网】:https://docs.nginx.com 【nginx配置文件说明】:https://docs.nginx.com/nginx/admin-guide/basic-functionality/managing-configuration-files/【官方doc】静态资源配置:https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/ 【博客】nginx location指令详解:添加链接描述
1.任意位置创建目录 “nginx”
cd /opt/docker/nginx; #进入到nginx根目录下,以下的$PWD 占位符都代表获取当前路径
2.创建目录和文件
目录 $PWD/www
目录 $PWD/conf/conf.d
文件 $PWD/conf/nginx.conf
文件 $PWD/conf/conf.d/default.conf
目录 $PWD/logs
mkdir www conf/conf.d logs;touch conf/nginx.conf conf/conf.d/default.conf
2.简单启动一个nginx-pre容器
docker run -p 80:80 --name nginx-pre \
--network mynet \
-d nginx
3.拷贝容器内的默认配置
拷贝容器内的默认配置到 自己创建的nginx/conf/nginx.conf 文件内
docker cp nginx-pre:/etc/nginx/nginx.conf $PWD/conf/nginx.conf
docker cp nginx-pre:/etc/nginx/conf.d/default.conf $PWD/conf/conf.d/default.conf
4.拷贝完成,删除容器
docker stop nginx-pre; docker rm nginx-pre
5.正式创建nginx容器
docker run -p 80:80 --name nginx \
--network mynet \
-v $PWD/www:/www \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/wwwlogs \
-v $PWD/conf/conf.d:/etc/nginx/conf.d \
-d nginx
6.搭建完毕
启动访问http://192.168.0.10/ 即可看到nginx欢迎页面
至此docker nginx基础配置环境搭建完毕。
命令说明
- -p 80:80: 将容器的80端口映射到主机的80端口
- –name nginx: 将容器命名为nginx
- -v $PWD/www:/www: 将主机中当前目录下的www挂载到容器的/www
- -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf: 将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf
- -v $PWD/logs:/wwwlogs: 将主机中当前目录下的logs挂载到容器的/wwwlogs
多配置文件
在默认的nginx.conf中可以看到include /etc/nginx/conf.d/*.conf;
表示默认加载conf.d目录下的所有文件配置,我们可以按照多个server分多个文件
不重启容器刷新配置文件
参考:
https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/https://blog.csdn.net/weixin_32820767/article/details/80643091
vim shell.sh
写入以下内容
#!/bin/bash
case "$1" in
"reload")
# 刷新配置
sudo docker exec -it <容器名称> bash -c "nginx -s reload"
;;
"test")
# 检查配置是否正确
sudo docker exec -it <容器名称> bash -c "nginx -t"
;;
*)
echo "Usage: sh shell.sh [test|reload]"
exit 1
;;
esac
相关指令
# 检查nginx配置文件语法是否正确
./shell.sh test
# 刷新nginx配置
./shell.sh reload
后续
按需修改nginx.conf配置文件,为以下内容,
主要配置了域名和Docker应用的映射
#运行用户
#user somebody;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志
# error_log D:/Tools/nginx-1.10.1/logs/error.log;
# error_log D:/Tools/nginx-1.10.1/logs/notice.log notice;
# error_log D:/Tools/nginx-1.10.1/logs/info.log info;
#PID文件,记录当前启动的nginx的进程ID
#pid D:/Tools/nginx-1.10.1/logs/nginx.pid;
#工作模式及连接数上限
events {
worker_connections 1024; #单个后台worker process进程的最大并发链接数
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型(邮件支持类型),类型由mime.types文件定义
#include D:/Tools/nginx-1.10.1/conf/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 D:/Tools/nginx-1.10.1/logs/access.log main;
rewrite_log on;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
keepalive_timeout 120;
tcp_nodelay on;
#gzip压缩开关
#gzip on;
#设定实际的服务器列表
upstream ksp-web-prod{
server ksp-web-prod:8080;
}
#HTTP服务器
server {
listen 80;
server_name www.kspshare.cn; # 把域名替换成你自己的
location / {
proxy_pass http://ksp-web-prod;
#以下是一些反向代理的配置可删除
#proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#client_max_body_size 10m; #允许客户端请求的最大单文件字节数
#client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
#proxy_connect_timeout 300; #nginx跟后端服务器连接超时时间(代理连接超时)
#proxy_send_timeout 300; #后端服务器数据回传时间(代理发送超时)
#proxy_read_timeout 300; #连接成功后,后端服务器响应时间(代理接收超时)
#proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
#proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
#proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
#proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
}
参考:https://www.w3cschool.cn/docker/docker-install-nginx.html