nginx详解

Nginx-高性能的 Web 服务端

        Nginx是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发 工作最早从2002年开始,第一次公开发布时间是2004年10月4日,版本号是0.1.0

        2019年3月11日F5 与 NGINX达成协议,F5 将收购 NGINX 的所有已发行股票,总价值约为 6.7 亿美元。 6.7亿美金约合44.97亿人民币,nginx核心模块代码长度198430(包括空格、注释),所以一行代码约为 2.2万人民币

官网地址 www.nginx.org

Nginx历经十几年的迭代更新( https://nginx.org/en/CHANGES), 目前功能已经非常完善且运行稳 定,另外Nginx的版本分为开发版、稳定版和过期版,nginx以功能丰富著称,它即可以作为http服务 器,也可以作为反向代理服务器或者邮件服务器能够快速的响应静态网页的请求

支持FastCGI/SSL/Virtual Host/URL Rwrite /Gzip / HTTP Basic Auth/http或者TCP的负载均衡(1.9版本以 上且开启stream模块)等功能,并且支持第三方的功能扩展

环境,rhel9.3

内存较大 4g

单主机

ip 192.168.110.100

nginx的源码编译

1,用xftp传个nginx1.24

2,解压

3,进入目录

4,安装支持软件

dnf install gcc pcre-devel zlib-devel openssl-devel -y

5,安装

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module

6,编译

7,创建一个新的用户账户

8,执行nginx 的可执行文件

9,查看访问

10,查看文件大小

11.关闭debug功能

12,再次执行

13,把nginx软件的命令执行路径添加到环境变量中

14,查看现在大小

15,启动nginx

16,访问查看

17,配置文件目录,配置文件所在位置

nginx的平滑升级与回滚

1,下载更加新的版本

https://nginx.org/download/nginx-1.26.2.tar.gz

2,添加echo模块

3,解压1.26版本

4,环境检测

5,回复环境纯净

6,重启动

7,把新版本的nginx命令复制过去

8,平滑更新:一些复杂的系统可能利用这些信号来触发平滑的重启或更新过程,以减少服务中断

9,回收旧版本

10,查看此时版本

11,平滑回滚

12,查看此版本

13,删除之前文件

nginx简单命令

1,查看当前版本

2,将当前版本升至新版本

3,检测配置文件中的语法是否正常

4,在不关闭进程的情况下重新加载配置

5,设置全局指令,使多个worker进行(注意和 配置文件不要同时配置,否则冲突)

【1】修改配置文件

【2】当前线程

【3】关闭修改

【4】现在线程

【5】回复纯净

启动脚本编写

1,创建脚本

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
​
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
​
[Install]
WantedBy=multi-user.target

2,使其生效

nginx核心配置详解

修改全局配置

1,修改用户与自动根据你有几个核心匹配进程

【1】修改内容

【2】效果

2,cpu核心绑定

【1】修改内容

【2】效果

3,修改最大链接数

【1】查看系统本身可以打开多少文件

【2】修改系统配置文件,使nginx用户可以同时打开文件数量更多

【3】检测是否可行(此数可更大,非极值)

【4】修改nginx配置文件

4,使用epoll,提高程序在大量并发连接时只有少量活跃连接的情况下的效率

修改vim配置

nginx配置中的root和alias

1,新建一个 PC web 站点

【1】为避免主配置文件过长,写于子配置文件中。主配置修改

【2】建立子配置文件

【3】导入测试页

【4】校验是否有问题

【5】更新配置

【6】增加电脑域名解析

【7】访问一下

root与allias

2,root:指定web的家目录,在定义location的时候,文件的绝对路径等于 root+location

【1】修改配置(可直接看【6】)

【2】创建所需文件,设置测试页

【3】检测语法是否有误,加载配置

【4】访问测试

【5】查看错误日志

【6】修改配置

【7】测试

alias:定义路径别名,会把访问的路径重新定义到其指定的路径,文档映射的另一种机制;仅能用于 location上下文,此指令使用较少

【1】配置

【2】重加载并测试

location

语法规则

在目标相同时 不带符号,= ,^~, ~ ,~*。五种中,

                t0~ 与 ~ * 谁在前优先级最高

                t1不带符号次之

                t2 ^~

                t3 =

1,不带符号

【1】配置

【2】添加测试页

【3】访问

2, =

#用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立即处理请求

【1】配置

【2】添加测试页

【3】测试 发现不加东西的优先级最高

3, ^~

#用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头

#对uri的最左边部分做匹配检查,不区分字符大小写

【1】配置

【2】添加测试页

【3】测试

不是以t开头,无法查到

4,~

#用于标准uri前,表示包含正则表达式,并且区分大小写

【1】配置

【2】测试

用户认证

由 ngx_http_auth_basic_module 模块提供此功能

【1】创建认证文件

【2】创建测试页

【3】配置

【4】测试

设置错误页面

【1】编辑

【2】建立页面

【3】测试

自定义错误日志

原错误文件日志位置

【1】配置

【2】建立所需文件

【3】添加地址解析

【4】测试

检测文件是否存在

【1】配置

try_files $uri $uri.html $uri/index.html /error/default.html;

【2】建立所需文件

【3】原访问

【4】如果删去访问页

【5】恢复

长连接配置

【1】编辑主配置文件

【2】安装测试工具 telnet

【3】测试

keepalive_timeout 65 65秒后断开连接

(keepalive_requests 2)

【4】另一种配置

【5】效果

下载服务器的设定及优化

【1】创建下载目录,并创建一个大小为100MB的文件

【2】修改配置文件

【3】访问测试

3,状态页面

【1】新编写子配置文件(非必要)

【2】添加地址解析

【3】访问

【4】不能让人随便看,修改配置

【5】添加本地解析并测试

真实主机不受限

4,数据压缩功能

Nginx支持对指定类型的文件进行压缩然后再传输给客户端,而且压缩还可以设置压缩比例,压缩后的文 件大小将比源文件显著变小,样有助于降低出口带宽的利用率,降低企业的IT支出,不过会占用相 应的CPU资源。

Nginx对文件的压缩功能是依赖于模块 ngx_http_gzip_module,默认是内置模块

【1】配置文件

gzip_comp_level 4;
    gzip_min_length 1k;
    gzip_http_version 1.1;
    gzip_vary on;
    include "/usr/local/nginx/conf.d/*.conf";
    gzip_types text/plain application/javascript application/x-javascript text/css 
application/xml text/javascript application/x-httpd-php image/gif image/png;

【2】创建大小文件准备测试

【3】测试

nginx中变量的使用

【1】创建子配置文件

efault_type text/html;
​        echo $remote_addr;
​        echo $is_args;
​        echo $document_root;
​        echo $document_uri;
​        echo $host;
​        echo $remote_port;
​        echo $remote_user;
​        echo $request_method;
​        echo $request_filename;
​        echo $request_uri;
​        echo $scheme;
​        echo $server_protocol;
​        echo $server_addr;
​        echo $server_name;
​        echo $server_port;
​        echo $http_user_agent;
​        echo $http_cookie;
​        echo $cookie_key2;

【2】添加本地解析

【3】测试

curl -b "key1=wuyyy,key2=wuyyy1" -u lee:lee var.wuyyy.org/var?name=wuyyy&&id=6666

【4】设置变量

【5】效果

rewite相关功能

【1】修改配置文件(if)

【2】检验

【3】修改配置文件(break添加前)

【4】重启测试

【5】添加break后

【6】测试发现被终止了

【7】再加判断语句

【8】再测(curl中断,其他全输出)

【9】修改配置(ruturn)

【10】测试

3,rewrite 指令

rewrite flag 使用介绍

permanent,redirect,临时,永久充定向

【1】配置

设置配置页

【2】效果

【3】永久重定向

访问前

修改配置后

【4】测试(因为curl不支持充定向,在浏览器中测)

【5】临时重定向

修改配置

【6】测试

rewrite 案例: break 与 last

【1】准备工作

【2】配置

【3】浏览器测试

【4】测试break

显示结果

【5】测试last

显示结果

 自动跳转 https

【1】创建文件

【2】创建认证文件

这条命令是使用 OpenSSL 工具生成一个新的自签名 SSL 证书和相应的私钥。这个证书和私钥可以用于测试环境或内部网络中的 HTTPS 加密通信。下面是对这条命令各部分的详细解释:

  • openssl req: 这是 OpenSSL 命令行工具用于创建证书签名请求(CSR)的命令,但在这里通过一些选项的组合,它被用来直接生成一个自签名证书。

  • -newkey rsa:2048: 这个选项告诉 OpenSSL 生成一个新的 RSA 私钥,密钥长度为 2048 位。RSA 是一种广泛使用的公钥加密算法,2048 位长度是目前认为安全的长度之一。

  • -nodes: 这个选项用于生成私钥时不设置密码保护。-nodes--no-des 的简写,意味着不使用 DES 加密私钥文件。在自动化脚本或需要频繁访问私钥的场景下,这很有用。

  • -sha256: 指定使用 SHA-256 哈希算法来签名证书。SHA-256 是 SHA-2 系列哈希算法之一,比旧的 SHA-1 更安全。

  • -keyout /usr/local/nginx/certs/wuyyy.org.key: 指定生成的私钥文件的保存路径和文件名。这里,私钥被保存在 /usr/local/nginx/certs/wuyyy.org.key

  • -x509: 这个选项告诉 OpenSSL 创建一个自签名的证书,而不是一个证书签名请求(CSR)。自签名证书意味着证书由同一实体生成和签名,这在测试环境中很常见,但在生产环境中通常不被接受,因为自签名证书不被标准的浏览器和客户端信任。

  • -days 365: 指定证书的有效期为 365 天。这是证书从签发之日起到过期日期之间的天数。

  • -out /usr/local/nginx/certs/wuyyy.org.crt: 指定生成的证书文件的保存路径和文件名。这里,证书被保存在 /usr/local/nginx/certs/wuyyy.org.crt

执行这条命令时,OpenSSL 会提示你输入一些证书的信息,如国家(C)、省份(ST)、城市(L)、组织(O)、组织单位(OU)、通用名称(CN,即你的网站域名或服务器名)等。这些信息将包含在证书中,并被客户端(如浏览器)用于验证证书的身份。

完成后,你将拥有两个文件:一个私钥文件(.key)和一个自签名证书文件(.crt),这两个文件可以用于配置 Nginx 或其他支持 SSL/TLS 的服务器,以实现 HTTPS 加密通信。

【3】编辑子配置目录

【4】访问测试

【5】修改配置,是默认去https

【6】测试 自动添加

【7】修改配置,添加报错机制

【8】测试,当输入主站没有的文件时,自动跳转

Nginx 防盗链

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标 记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗 链,referer就是之前的那个网站域名,正常的referer信息有以下几种:

【1】添加图片(俩不能放一块)

【2】配置防盗链

【3】此时将无法通过非标记链接访问单个文件,只可以直接搜索

【4】另一种写法

Nginx 反向代理功能

逻辑调用关系

访问逻辑图:

反向代理配置参数

【1】准备另两台主机 httpd 110,120(之前的),顺便把之前的子配置删了

【2】修改配置(8080改httpd的配置文件也行,但只能写一个)

【3】测试

【4】配置(子配置,和web2的)

【5】测试

【6】动静分离配置

【7】web1配置

【8】测试

反向代理示例: 缓存功能

【1】配置主配置文件

proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2:2 keys_zone=proxycache:20m inactive=120s max_size=1g;

【2】子配置文件修改

在Nginx配置中,proxy_cache 指令及其相关指令用于设置代理缓存的行为,以提高网站的性能和响应速度。下面是对您提供的配置行的解释:

  1. proxy_cache proxycache;

    • 这一行启用了Nginx的代理缓存功能,并指定了一个名为

      proxycache

      的缓存区域(cache zone)。在Nginx配置中,你需要在其他地方(通常在

      http

      块中)定义这个缓存区域,包括它的名称、大小、路径和可选的其它参数(如内存大小、加载因子等)。例如:

      nginx复制代码
      ​
      proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=proxycache:10m max_size=10g;

      这里,

      /data/nginx/cache

      是缓存文件存储的目录,

      levels=1:2

      定义了缓存目录的层级结构(用于优化文件查找),

      keys_zone=proxycache:10m

      指定了缓存区域的名称为

      proxycache

      ,并为其分配了10MB的内存用于存储缓存键和元数据,

      max_size=10g

      限制了缓存区域的最大大小为10GB。

  2. proxy_cache_key $request_uri;

    • 这一行定义了用于生成缓存键的变量。默认情况下,Nginx使用请求的URI(包括查询字符串)作为缓存键。这里显式地指定了使用$request_uri作为缓存键,这通常是默认行为,但显式指定有助于清晰配置。

  3. proxy_cache_valid 200 302 301 10m;

    • 这行指令为特定HTTP响应状态码指定了缓存有效期。对于状态码为200(成功)、302(临时重定向)和301(永久重定向)的响应,它们将被缓存10分钟。这意味着,如果Nginx在接下来的10分钟内再次收到相同的请求(具有相同的缓存键),它将直接从缓存中提供响应,而不是向后端服务器转发请求。

  4. proxy_cache_valid any 1m;

    • 这行指令为所有未明确指定缓存有效期的HTTP响应状态码指定了默认缓存有效期。这里,它被设置为1分钟。如果某个响应的HTTP状态码没有通过proxy_cache_valid指令明确指定缓存时间,那么它将使用这个默认值。

【3】压力测试

【4】查看保留位置

http 反向代理负载均衡

【1】配置

【2】访问测试

【3】配置hash

【4】效果

【5】配置cookie值hash

【6】测试

实现 Nginx 四层负载均衡

环境准备(之前俩个出错没找到原因)

.10/20俩主机

编辑配置文件

检查配置是否成功

传到另外一个去(打错了按下面的输入)

改另一个

检查

【1】配置

因从冲突,故移动改文件

【2】检查

mysql配置

【1】数据库修改

【2】启动

【3】远程链接准备

【4】修改配置

【5】安装数据库客户端(不然用不了没命令)

【6】测试

实现 FastCGI

重新编译

【1】删除

【2】导入所需安装包

【3】解压

【4】编译

./configure --prefix=/usr/local/nginx --add-module=/root/node1/echo-nginx-module-0.63 --add-module=/root/node1/memc-nginx-module-0.20 --add-module=/root/node1/srcache-nginx-module-0.33 --user=nginx --group=nginx --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-pcre

【5】删除旧版nginx

【6】启动

php源码安装

【1】传入文件

【2】解压,进入

【3】检测

./configure --prefix=/usr/local/php --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】安装缺少的环境

【5】再检测

【6】检测缺啥安装

【7】再测

【8】再装

【9】测

【10】装

---------------------------------------------------------------------------------------------------------------------------------

图片超过300张,明日再添加后面图片

【11】测

【12】装

【13】测

【14】z

没找到,去阿里云找

【15】c

难崩

【16】编译

php相关配置优化

【1】生成主配置文件

【2】修改配置文件

【3】生成子配置文件目录

【4】生成php配置文件

【5】编辑文件,更改时区

【6】生成启动脚本

【7】编辑启动文件

【8】重加载配置文件,启动php,查看结果

【9】更改配置(注意!!!此写法不报错,但不算全端口。请改为0.0.0.0:9000)

【1】添加环境变量

【2】编写文件

【3】配置

【4】配置

【6】访问测试

【7】查看错误日志

【9】再次测试

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个开源的容器化平台,用于轻松地打包、部署和运行应用程序。而Nginx是一个高性能的开源反向代理服务器,也是一个流行的Web服务器。 在使用Docker部署Nginx时,你需要以下几个步骤: 1. 首先,你需要安装Docker。你可以根据你的操作系统去官方网站下载并安装Docker。 2. 在安装完成后,你需要编写一个Dockerfile文件来定义Nginx容器的构建过程。一个简单的例子如下: ```dockerfile FROM nginx:latest COPY nginx.conf /etc/nginx/nginx.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 这个Dockerfile使用最新版本的Nginx作为基础镜像,然后将自定义的`nginx.conf`文件复制到容器中的`/etc/nginx/nginx.conf`路径下。接着,将容器的80端口暴露出来,并设置Nginx以非守护进程的方式运行。 3. 在同一目录下创建`nginx.conf`文件,并在其中进行Nginx的相关配置。例如,可以指定Nginx监听的端口、代理规则等。 4. 接下来,使用Docker命令来构建镜像。在终端中切换到Dockerfile所在的目录,并执行以下命令: ``` docker build -t my-nginx . ``` 这个命令会根据Dockerfile构建一个名为`my-nginx`的镜像。注意最后的`.`表示Dockerfile所在的路径。 5. 构建完成后,你可以使用以下命令来运行Nginx容器: ``` docker run -d -p 80:80 my-nginx ``` 这个命令会在后台运行一个名为`my-nginx`的容器,并将主机的80端口映射到容器的80端口。 现在,你已经成功地使用Docker部署了Nginx。你可以通过在浏览器中访问`http://localhost`来验证Nginx是否正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值