一、 Docker 安装 Nginx
1.1 启动 Nginx 实例
sudo docker run -p 80:80 --name nginx -d nginx:1.20
1.2 将 Nginx 实例的配置文件拷贝出来
sudo docker container cp nginx:/etc/nginx .
# nginx:/etc/nginx 表示名字为 nginx 容器中 /etc/nginx 路径
# . 表示系统当前所在路径 ( 可以用 pwd 查看当前路径 比如当前路径为 /home/appuser/nginx/conf )
1.3 停用当前的名为 nginx 容器,并移除该容器
sudo docker stop nginx
sudo docker rm nginx
1.4 按需求修改拷贝出来的配置文件
略
1.5 重新创建 nginx 容器,并挂载上拷贝出来的配置文件
sudo docker run -p 80:80 --name nginx \
-v /home/appuser/nginx/conf:/etc/nginx \ # 挂载配置文件
-v /home/appuser/logs:/var/log/nginx \ # 挂载日志
-v /home/appuser/html:/usr/share/nginx/html \ # 挂载页面文件
-d nginx:1.20
二、 Nginx 配置文件
配置文件结构
全局块: 配置影响 nginx 全局的指令。如:用户组,nginx 进程 pid 存放路径,日志存放路径,配置文件引入,允许生成 worker process 数量等
event 块:配置影响 nginx 服务器或与用户的网络连接。
HTTP块: 可以嵌套多个 server,配置代理、缓存、日志定义等绝大多数功能和第三方模块的配置。
http 全局块:如 upstream,错误页面,连接超时等
server 块:一个 http 中可以有多个 server,每个 server 块相当于一个虚拟主机,而每个 server 块也分为 全局 server 块 和 多个 location 块
全局 server 块: 配置本虚拟机主机的监听配置和本虚拟主机的名字和 IP 配置
location 块 :配置请求的路由,以及各种页面的处理情况
# 全局块
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
# events 块
events {
worker_connections 1024;
}
# http 块
http {
# http 全局块
include /etc/nginx/mime.types;
default_type application/octet-stream;
# upstream 反向代理的上游服务器
upstream lmall{
# 反向代理的上游服务器 ip 地址为 192.168.23.1:88
server 192.168.23.1:88;
}
# server 块
server {
# 监听端口
listen 80;
listen [::]:80;
# http 请求中的 host name 域名
server_name lmall.com *.lmall.com;
# 将 host 路径中的 /static 做静态代理,
# 比如 nginx 收到请求为 http://lmall.com:80/static/124.img
# 则会直接件本机 /usr/share/nginx/html/124.img 文件代理出去
location /static/ {
root /usr/share/nginx/html;
}
location / {
proxy_set_header Host $host; # 方向代理默认会丢弃请求中的 host
proxy_pass http://lmall; # 这里的 lmall 指的是上面的 upstream 反向代理上游服务器
}
}
# 引入配置文件 多个 server 块
include /etc/nginx/conf.d/*.conf;
}