nginx官网下载:
Linux安装
#上传代码之后进行解压
tar zxvf nginx-1.21.6.tar.gz
#查看
ls
#进入nginx
cd nginx-1.21.6
#查看
ls
#编译安装
./configure --prefix=/usr/local/nginx
#编译
make && make install
#环境安装gcc
yum install -y gcc pcre pcre-devel zlib zlib-devel
启动Nginx
进入安装好的目录/usr/local/nginx/sbin
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭
./nginx -s reload 重新加载配置
关于防火墙
关闭防火墙
systemctl stop filewalld.service
#禁止防火墙开机自启动
systemctl disable filewalld.service
#放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重启防火墙
firewall-cmd --reload
安装成系统服务
创建服务脚本
vi /usr/lib/systemd/system/nginx.service
服务脚本内容
[Unit]
Description=nginx - web service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExceStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
系统命令
#重新加载系统服务
systemctl daemon-reload
#设置开机自启动
systemctl enable nginx
#启动nginx服务
systemctl start nginx.service
#重新启动服务
systemctl restart nginx.service
#查看服务当前状态
systemctl status nginx.service
#停止开机自启动
systemctl disable nginx.service
Docker 安装 Nginx 容器
Docker官方镜像
寻找Nginx镜像
下载Nginx镜像
命令 | 描述 |
docker pull nginx | 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest ) |
docker pull nginx:xxx | 下载指定版本的Nginx镜像 (xxx指具体版本号) |
检查当前所有Docker下载的镜像
docker images
创建Nginx配置文件
启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)
之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果 。
# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html
容器中的nginx.conf文件和conf.d文件夹复制到宿主机
# 生成容器
docker run --name nginx -p 9001:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
创建Nginx容器并运行
Docker 创建Nginx容器
# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
启动命令
docker run \
-p 9002:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest
命令 | 描述 |
–name nginx | 启动容器的名字 |
-d | 后台运行 |
-p 9002:80 | 将容器的 9002(后面那个) 端口映射到主机的 80(前面那个) 端口 |
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf | 挂载nginx.conf配置文件 |
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d | 挂载nginx配置文件 |
-v /home/nginx/log:/var/log/nginx | 挂载nginx日志文件 |
-v /home/nginx/html:/usr/share/nginx/html | 挂载nginx内容 |
nginx:latest | 本地运行的版本 |
\ | shell 命令换 |
单行模式
docker run -p 9002:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest
结果检测
修改内容进行展示
# 重启容器
docker restart nginx
Nginx的学习编辑默认页
进入nginx下的修改index.html
/usr/local/nginx/html
Nginx配置与应用场景
worker_processes
worker_processes 1;默认为1,表示开启一个业务进程
worker_connections
worker_connections 1024;单个业务进程可接受连接数
include
include mime.types;引入http mine类型
default_type
default_type application/octet-stream;如果mine类型没有匹配上默认使用二进制流的方式传输
sendfile
sendfile on;使用Linux的sendfile(socket,file,len)高校传输,也是数据0拷贝未开启sendfile
keepalive_timeout 65;
#虚拟主机 vhost
server {
listen 80;
server_name localhost; #域名
#http://域名/index.xml
location / {
root html;
index index.html index.htm;
}
#http://域名/50.xml
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}