一、Nginx 源码编译
1. 官网下载稳定版并解压
2. 检测安装环境,安装必要的依赖
3. 根据自身需求安装模块并编译 Nginx

4. 创建 nginx 用户及启动文件


5. 编写启动文件

首先通过 nginx -s stop 停止服务,否则会显示端口占用。

二、Nginx 平滑升级和回滚
1. 下载高版本 Nginx
2. 编写高版本 Nginx 版本信息配置文件

3. 源码编译并启动
-
不运行
make install -
将
objs下的nginx拷贝到原先的启动文件下
[root@Nginx sbin]# cp -f /root/nginx-1.29.4/objs/nginx /usr/local/nginx/sbin/nginx
-f 为强制覆盖。\ 表示绕过可能的别名。
-
查看 Nginx 日志文件夹
-
结束 Nginx 的 master 进程

- 再查看日志文件夹及运行版本与之前修改的配置文件内容一致

4. 回收旧版本的子进程

5. 版本回退
-
重新将旧版本的 Nginx 启动脚本复制至启动文件夹
-
重新加载旧版本 Nginx 主进程
-
查看版本信息

三、Nginx 配置文件管理及优化参数
1. 增加用户为 Nginx、worker 进程个数增加


2. 更改核心数量并绑定 CPU


3. 增加 Nginx 并发量

测试

四、构建静态站点
1. location 指令中的 root 参数
用子配置文件的方式编写
-
新建子配置文件目录
-
编写主配置文件
include "/usr/local/nginx/conf/conf.d/*.conf";
- 编写子配置文件并新建测试访问内容
[root@Nginx ~]# mkdir -p /webdata/nginx/example.com/lee/html
[root@Nginx ~]# echo lee.example.com > /webdata/nginx/example.com/lee/html/index.html
mkdir -p /webdata/nginx/example.com/lee/html/lee
[root@Nginx conf.d]# echo lee > /webdata/nginx/example.com/lee/html/lee/index.html
#lee 标识 location 中的 root 值 + location 后面指定的值代表目录的路径
- 效果测试

2. location 中的 alias 参数
- 修改子配置文件

- 测试
建立 /mnt/ 下默认发布文件
echo passwd > /mnt/index.html

五、Keepalived 长连接优化
1. 设定长连接时间

五秒后自动断开

2. 设定长连接次数

访问三次后自动断开

六、Location 字符匹配详解
#匹配优先级从高到低:=, ^~, /*, 不带符号
1. 后面不加符号
表示区分大小写,严格访问该目录,不可包含


2. location 后+"="
表示精确匹配,必须完全一致


3. location 后+"^~"
表示由该目录开头,里面可以包含其他目录但必须是根目录下的该目录


4. location 后+"~"
表示访问的文件夹包含该名称由该字母开头的,后面可以跟其他字符,且区分大小写。


5. location 后+"~*"
表示访问文件包含该内容,不区分大小写,只要包含即可被选中。但是同样改文件名前面必须一致。


6. location 后+"\"
为转义字符,通过此做法进行动静分离。


七、服务访问的用户认证
1. 非交互建立用户 admin

2. 编辑配置文件启用密码登录功能

3. 建立访问文件
[root@Nginx conf.d]# mkdir -p /usr/local/nginx/html/admin
[root@Nginx conf.d]# echo amdin >/usr/local/nginx/html/admin/index.html
4. 测试

八、自定义错误页面
1. 新建错误页面内容

2. 编辑配置文件

3. 重启后测试
没有新建该访问内容,错误代码为 404 转换到错误页面内容上。

九、自定义错误日志
1. 新建错误日志存放目录
[root@Nginx ~]# mkdir -p /usr/local/nginx/logs/example.org/
2. 修改配置文件内容

3. 重启并测试

十、Nginx 中建立下载服务器
1. 新建普通文件及大文件做测试

2. 编辑配置文件

3. 客户端拉取内容

4. 下载控速
1) 实际下载速度太快影响服务器性能

2) 修改配置文件限制下载速度

3) 测试

5. 显示文件大小优化
通过配置文件中的参数进行显示优化


6. 时间显示调整


7. 设定页面风格
通过 autoindex_format 参数后面跟不同的页面类型达到设定页面风格的目的

十一、Nginx 的文件检测
try_files 会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部 URI 的指向。最后一个参数是回退 URI 且必须存在,否则会出现内部 500 错误。
1. 设定测试文件

2. 编辑配置文件

3. 访问测试

十二、Nginx 的状态页
1. 修改配置文件
只能 usr/local/nginx/conf/.htpasswd 文件中的用户才能查看

2. 访问测试

十三、Nginx 的压缩功能
1. 新建测试文件
一个文件大小较大一个较小
2. 修改主配置文件

3. 子配置文件中指定路径

4. 访问测试文件测试

十四、Nginx 变量
1. 增加 Nginx 的 echo 模块

删除原先的 nginx 启动文件,完成后将最新的启动文件拷贝到启动文件夹下。
2. 内建变量

3. 测试

4. 内建变量


十五、网页重写
1. 网页重写指令
1) if 指令
= #比较变量和字符串是否相等,相等时 if 指令认为该条件为 true,反之为 false
!= #比较变量和字符串是否不相等,不相等时 if 指令认为条件为 true,反之为 false
~ #区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~ #区分大小写字符,判断是否匹配,不满足匹配条件为真,满足匹配条件为假
~* #不区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~* #不区分大小字符,判断是否匹配,满足匹配条件为假,不满足匹配条件为真
-f 和 !-f #判断请求的文件是否存在和是否不存在
-d 和 !-d #判断请求的目录是否存在和是否不存在
-x 和 !-x #判断文件是否可执行和是否不可执行
-e 和 !-e #判断请求的文件或目录是否存在和是否不存在 (包括文件,目录,软链接)
注意: 如果$变量的值为空字符串或 0,则 if 指令认为该条件为 false,其他条件为 true。 nginx 1.0.1 之前$变量的值如果以 0 开头的任意字符串会返回 false


2) set 指令


3) return 指令
返回一个值


4) break 值
直接中断


2、flag
1) 临时重定向 redirect
将网页临时重写到百度


2) 永久重定向 permanent


3、break 和 last 的区别
1) 新建测试文件

2) break:修改配置文件

3) break:测试
访问 break/index.html 时从写到 text1/index.html,遇到 break 直接中断。

4) last:配置文件修改

5) last 测试
遇到 last 时继续向下读取,重写到 location /test1 字段

十六、Nginx 利用网页重写实现全站加密
1. 制作公私密钥
[root@Nginx ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/nginx/certs/example.org.key -x509 -days 365 -out /usr/local/nginx/certs/example.org.crt
2. 编辑加密配置文件

3. 测试

十七、防盗链
1. 新建主机编辑配置文件
图片是从 nginx 服务器上获得的

2. 修改 nginx 服务器配置文件防止盗链
访问时直接跳转到另外一个图片

3. 测试

十八、Nginx 的反向代理
1. 简单的代理
[root@RS2 ~]# mkdir /var/www/html/web
[root@RS2 ~]# echo 172.25.254.20 web > /var/www/html/web/index.html


2. proxy_hide_header 参数
隐藏头部信息



3. proxy_pass_header
默认访问不透传 server 信息



4. 透传信息 proxy_set_header
1) 修改后端服务器日志信息配置
[root@RS1 ~]# vim /etc/httpd/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-Forwarded-For}i\"" combined
[root@RS1 ~]# systemctl restart httpd
2) Nginx 修改配置文件

3) 访问后查看日志

十九、利用反向代理实现动静分离
1. 实验环境配置
在 RS1 中下载 php 软件。
2. 修改配置文件

3. 测试


二十、缓存加速
1. 高并发访问

2. 设定缓存加速
1) 主配置文件修改

2) 子配置文件修改

3. 测试


二十一、反向代理负载均衡
1. 编辑主配置文件

2. 编辑子配置文件

错误页面设置
[root@Nginx ~]# mkdir -p /webdir/example.org/error/html
[root@Nginx ~]# echo error > /webdir/example.org/error/html/index.html
[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhosts.conf
server {
listen 8888;
root /webdir/example.org/error/html;
}
3. 测试

后端服务停止后

二十二、负载均衡算法


二十三、PHP 源码编译
1. 下载安装包
2. 下载依赖
3. 选择模块编译
[root@Nginx ~]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd
4. 配置 PHP
1) 指定 pid 文件存放位置


2) 编辑主配置文件 www.conf
设置监听端口

3) 修改时区配置文件
[root@Nginx php-fpm.d]# cp /root/php-8.3.30/php.ini-production /usr/local/php/etc/php.ini
[root@Nginx php-fpm.d]# vim /usr/local/php/etc/php.ini

4) 生成启动文件
[root@Nginx ~]# cp /root/php-8.3.30/sapi/fpm/php-fpm.service /lib/systemd/system/
[root@Nginx ~]# vim /lib/systemd/system/php-fpm.service

将其注释掉这些文件的只读权限,重新加载启动文件后启动 php

5. PHP 设置环境变量
[root@Nginx ~]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/nginx/sbin:/usr/local/php/sbin:/usr/local/php/bin

二十四、Nginx 整合 PHP
1. 准备测试页面
php 页面及静态页面

2. 编辑配置文件

3. 测试


二十五、利用 Memcached 实现 PHP 的缓存加速

1. 下载安装 Memcached
2. 配置 Memcached


3. 升级 PHP 对于 Memcached 的支持
1) 下载 memcache-8.2.tgz 插件
下载 configure 脚本工具


2) 修改配置文件使其支持 Memcached



4. 测试性能


二十六、Nginx+Memcached 实现高速缓存

1. 重新编译 Nginx
增加 Memcached 高速缓存模块

2. 整合 Memcached

测试:ab -n 10000 -c500 http://php.baobao.org/example.php
二十七、Nginx 的四层负载均衡代理
1. 后端服务器安装 MariaDB 并新建账户

2. DNS 服务
1) 修改主配置文件

2) 修改子配置文件

3) 配置解析记录

4) 测试

3. TCP 四层负载
1) 修改主配置文件
导入子配置文件位置在 http 字段之外

2) 编辑子配置文件
stream 模块

3) 测试
另外的客户端测试

4. UDP 四层负载
1) 修改子配置文件
仅能有一个 stream 模块文件

2) 测试


二十八、OpenResty 编译安装
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
[root@Nginx ]# wget https://openresty.org/download/openresty-1.27.1.2.tar.gz
[root@Nginx ~]# dnf -yq install gcc pcre-devel openssl-devel perl zlib-devel
[root@Nginx ~]# useradd -r -s /sbin/nologin nginx
[root@Nginx ~]# tar zxf openresty-1.27.1.2
[root@webserver ~]# cd openresty-1.27.1.2/
[root@Nginx openresty-1.17.8.2]# ./configure \
--prefix=/usr/local/openresty \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre --with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
[root@Nginx openresty-1.17.8.2]# gmake && gmake install
[root@webserver openresty]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/openresty/bin
source ~/.bash_profile



