nginx简介及功能

一、简介:

1、nginx、apache是什么?

  • ‌Nginx‌是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。它由伊戈尔·赛索耶夫为Rambler.ru站点开发,以其稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。Nginx的特点包括占有内存少、并发能力强、配置简单,并且支持负载均衡,通常被用作前端服务器或反向代理服务器。它特别适合处理静态文件和网页服务,同时也支持动态页面通过扩展脚本和模块。Nginx的这些特性使其在处理高并发访问时表现出色,适合于需要处理大量并发连接的场景‌。
  •  ‌Apache‌则是一个模型化的服务器,可以运行在几乎所有的服务器上,以其模块多、性能稳定而著称。Apache支持多种模块和扩展,包括对动态页面的支持,如PHP等,这使得它在处理动态请求时比较擅长。Apache采用同步多进程模型,每个连接对应一个进程,这种模型在处理复杂的应用逻辑时表现良好。然而,与Nginx相比,Apache在处理静态文件时的性能可能较低,尤其是在高并发环境下。尽管如此,Apache在模块化和.htaccess文件支持方面更有优势,提供了更多的配置选项和灵活性,适合于需要复杂配置和较多自定义功能的网站‌。
  • 在现代Web架构中,Nginx和Apache经常一起使用,利用它们各自的优势来提供更加强大和灵活的Web服务解决方案。例如,Nginx可以作为前端的反向代理服务器来处理静态文件和缓存内容,而Apache则处理动态请求。这种组合利用了两种服务器的最佳特性,以满足不同类型的应用需求‌。

2、nginx进程结构 

web请求处理机制

  • 多进程方式:服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,直 到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务 器资源耗尽而无法提供请求        
  • 多线程方式:与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个线程和此客 户端进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器 对系统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可 以相互访问同样的内存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作 了,IIS服务器使用了多线程的方式,需要间隔一段时间就重启一次才能稳定。 Nginx是多进程组织模型,而且是一个由Master主进程和Worker工作进程组成。

3、nginx模块介绍 

nginx 有多种模块        

  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件 驱动机制 、进程管理等核心功能
  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应 头设置 等等
  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如: Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等
  • 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的 支持
  • Stream服务模块: 实现反向代理功能,包括TCP协议代理
  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支 持等

二、nginx配置及其功能

1、环境搭建

1.1、下载安装

配置
去官网下载https://nginx.org/en/download.html 
本地上传nginx scp 本地文件 user@ip:路径
dnf install gcc pcre-devel zlib-devel openssl-devel -y安装需要的包
useradd -s /sbin/nologin -M nginx创建nginx用户
tar zxf nginx-1.24.0.tar.gz 解压
cd nginx-1.24.0/
./configure --prefix=/usr/local/nginx \ 检测环境是否搭建完成

通过scp命令上传文件到虚拟机 

 

没有error就代表成功,然后输入make && make install

 

查看发现有四个目录代表安装成功

1.2、检测版本以及参数

验证版本

vim ~/.bash_profile

添加如图参数

然后source ~/.bash_profile重启服务

查看版本

1.3、参数以及进程

使用二进制nginx
nginx version: nginx/1.18.0 Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options:
-?,-h         : this help 	
-v           : show version and exit  
-V           : show version and configure options then exit
#显示版本和编译参数
-t           : test configuration and exit #测试配置文件是否异常
-T           : test configuration, dump it and exit#测试并打印
-q         : suppress non-error messages during configuration testing 														#静默模式
-s signal   :send signal to a master process: stop, quit, reopen, reload  
发送信号,reload信号 会生成新的worker,但master不会重新生成
-p prefix     	: set prefix path (default: /etc/nginx/)#指定Nginx 目录
-c filename   : set configuration file (default: /etc/nginx/nginx.conf)
#配置文件路径  
-g directives : set global directives out of configuration file #设置全局指令,注意和配置文件不要同时配置,否则冲突
-V参数    查看版本

Vim auto/cc/gcc 关闭debug

接着关闭nginx

Nginx -s stop

然后vim /usr/local/nginx/conf/nginx.conf

把第二行work_processes注释掉

然后nginx -g “work_processes 6”

接着使用ps aux | grep nginx

三、nginx功能及其高级配置

1、nginx启动文件

如果出现发现不了pid或者进程被占用可以用如下代码
[root@iZ2ze4ef9xk9hkxafq58d9Z ~]# pkill -9 nginx
[root@iZ2ze4ef9xk9hkxafq58d9Z ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@iZ2ze4ef9xk9hkxafq58d9Z ~]# /usr/local/nginx/sbin/nginx -s reload操作
vim /lib/systemd/system/nginx.service

[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
ExecStarPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExeReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true[Install]
WantedBy=multi-user.target接着重载
Systemctl daemon-reload
然后启动
Systemctl enable --now nginx

2、平滑升级

2.1首先下载nginx更高的版本1.26.1

接着下载echo-nginx-module-0.63.tar.gz

解压后,进入1.26.1

使用如下命令编译新版本

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

接着输入make

2.2备份旧版本

2.3检测是否出现问题

通过命令ps ax | grep nginx查看进程号并鲨掉

Kill -USR2 42274

这里可以看到旧版本仍然生效

在这里回收旧版本,然后再查看发现已经更新了

3、回滚版本

3.1、卸载

如果发现新版本有问题,就使用回滚机制返回之前的版本

同样在sbin目录下,备份新版本cp nginx nginx.26

然后mv nginx.24 nginx

3.2、改变进程

鲨掉Kill -HUP 进程号

回收Kill WINCH 进程号

恢复原进程号

Kill  -HUP 原进程号

Curl -I localhost

查看版本完成

4、nginx全局配置

Vim /usr/local/nginx/conf/nginx.conf

更改如下配置

检测

5、location用法

5.1、测试文件

首先创建vim /usr/nginx/conf.d/vhost.conf

然后重载,最后页面访问

5.2、测试优先级

对目录(~等于~*)>不带符号>^~>=

同时测试

6、nginx用户认证

6.1、Htpasswd命令

首先下载包

创建并给用户设置密码

如果是已有用户,去掉-c参数,否则创建新的会重置原用户

 

查看密码

6.2、测试登录界面

先创建目录,然后编辑conf文件,接着放入自己想要显示的放入html中

6.2.1、登录页面

登录后

6.2.2、错误页面

同样编辑conf文件

接着将自己想要展示的放在里面

随便测试一个错误界面

7、自定义日志

添加如图参数

创建目录重载nginx

8、nginx文件检测

Vim /usr/local/nginx/conf.d/vhost.conf

9、nginx长链接

9.1、配置

Yum install telnet -y

Nginx 下载服务器

首先mkdir /data/web/download

设置 dd if=/dev/zero of=/data/web/download/leefile bs=lM count=100

接着更改配置

9.2、测试

10、nginx状态页

Vim /usr/local/nginx/conf.d/vhost.conf

同时vim /usr/local/nginx/conf.d/status.conf

测试

11、nginx内置变量

11.1、更改配置文件并重载

11.2、更改hosts

#nginx的内置变量server {listen 80;server_name var.timinglee.org;root /data/web/html;index index.html;location /var {default_type text/html;echo $remote_addr;echo $args;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;}
}

12、nginx自定义变量

12.1、nginx配置代码

#nginx自定义变量
server {listen 80;server_name var.timinglee.org;root /data/web/html;index index.html;location /var {default_type text/html;set $timinglee lee;echo $timinglee;}
}

测试

Ps:记得注释之前哪个vars.conf(全是血的教训)

13、Nginx网页重写 

这里可以看到显示出我设置的文本

14、Break参数

15、Return参数

在curl之前打开windows命令提示符,cd C:/WINDOWS/system32/drivers/etc

Echo 本机IP var.handsomeyang > hosts(我的本地hosts)

16、Rewrite 临时和永久

17、Break和last

18、全站加密

Cd /usr/local/nginx/

Mkdir certs

Vim /usr/local/nginx/conf.d/vhost.conf

19、实现盗链

19.1、首先实现防盗链

在主机中

创建目录/var/www/html/images在主机172.25.254.100中下载图片到/data/web/html和images中,注意images中只能放一张图片,否则会陷入死循环。

19.2、实现盗链

在node2中

然后vim /var/www/html/index.html

19.3、refer对于ip访问和域名的区别

这里实现更改盗链为不可见

图片就找不到了,同时点击老杨 

禁止了全栈,所以看不到了,直接使用www.handsomeyang.org是带了refer,而172.25.254.100是不带refer的。

所以ip访问是有的

这里设置对方盗链时,都扔到设置的图片哪里

20、nginx反向代理

20.1、准备

在上述两台机器上再克隆一台红帽9的,IP设为172.25.254.20

同时都echoIP到index

在主机curl两台机子

20.2、构建代理

vim /etc/httpd/conf/httpd.conf

Vim /usr/local/nginx/conf.d/vhost.conf

Ps:两个proxy必须注释一个

这种可以两个存在

同样vim vhost.conf

在node1主机中

Dnf install php -y

21、反向代理缓存

在node1也就是172.25.254.10中修改/etc/hosts,添加www.handsomeyang.org

接着ab -n1000 -c100 http://www.handsomeyang.org/static/index.html

接下来在主机中vim /usr/local/nginx/conf/nginx.conf

接着vim /usr/local/nginx/conf.d/vhost.conf

22、反向代理负载均衡

vim /usr/local/nginx/conf.d/vhost.conf

22.1、更改参数,测试域名

22.2、-b参数

22.3、bind参数

在node1,2里面安装bind

接着vim /etc/named.conf

接着systemctl restart named.service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSI七层网络模型 /TCP/IP五层模型以及封装分用的详细讲解

文章目录 协议分层的好处OSI七层网络模型TCP/IP五层网络模型网络设备所在的分层(重点)封装和分用 协议分层的好处 第一点: 在网络通信中,如果使用一个协议来解决所有的问题,那么这个协议就会非常的庞大,非常不利于去学习和理解&…

2023华为od机试C卷【转盘寿司】C 实现 单调栈

#include <stdio.h> #include <stdlib.h>/*单调栈 旋转寿司3 15 6 14 3 21 9 17*/ int main() {int i 0;int len 0;int data 0;int nums[501];char c ;while(scanf("%d",&nums[i]) 1){i;len;c getchar();if(c \n)break;}int *out NULL;int *s…

C语言-部分字符串函数详解 1-4

C语言-部分字符串函数详解 1-4 前言1.strlen1.1基本用法1.2注意事项\0size_t 1.3模拟实现 2.strcpy2.1基本用法2.2注意事项**源字符串必须以 \0 结束****会将源字符串中的 \0拷贝到目标空间****目标空间必须可修改****目标空间必须能容纳下源字符串的内容** 2.3模拟实现 3.strn…

【深度学习】【语音TTS】GPT-SoVITS v2 实战,训练一个人的音色,Docker镜像

文章目录 原理Dockerdocker push训练教程: https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/xyyqrfwiu3e2bgyk 原理 Docker 不用docker不行,不好分配显卡, 做个docker镜像: docker pull pytorch/pytorch:2.1.2

接口基础知识9:详解response body(响应体)

课程大纲 一、定义 HTTP响应体&#xff08;HTTP Response Body&#xff09;&#xff1a;服务器返回给客户端的数据部分&#xff0c;‌它包含了服务器对客户端请求的响应内容&#xff08;如客户端请求的资源、客户端请求的执行结果&#xff09;。 与请求类似&#xff0c;HTTP …

python之matplotlib (3 坐标轴设置)

写在前面 在说明坐标轴设置之前&#xff0c;我有必要和大家说清楚图像设置的一些方法&#xff0c;避免陷入困扰模糊的地步。前面我们说过&#xff0c;画图的三种方法&#xff08;python之matplotlib &#xff08;1 介绍及基本用法&#xff09;-CSDN博客&#xff09;。而设置也…

2024开源资产管理系统推荐 8款免费开源IT资产管理系统/软件

开源资产管理系统 开源资产管理系统是帮助企业管理、跟踪和优化其资产的强大工具。这些系统能够自动记录资产的详细信息&#xff0c;如采购日期、使用情况、维护记录等&#xff0c;从而实现资产的全生命周期管理。企业可以通过这些系统优化资产使用效率&#xff0c;减少资产闲…

【TCP】确认应答、超时重传机制和TCP报头

TCP 相关机制 TCP 基本特点&#xff1a;有连接、可靠传输、面向字节流、全双工 有连接、面向字节流和全双工都能在前面的代码中体现有连接&#xff1a;必须要先调用 accept 建立联系才能处理面向字节流&#xff1a;会拿到 clientSocket 对象的 InputStream 和 OutputStream&a…

python人工智能002:jupyter基本使用

小知识&#xff1a;将jupyter修改为中文&#xff0c;修改用户变量&#xff0c; 注意是用户变量&#xff0c;不是系统变量 新增用户变量 变量名&#xff1a;LANG 变量值&#xff1a;zh_CN.UTF8 然后重启jupyter 上一章的软件安装完成之后&#xff0c;就可以创建文件夹来学习写…

MaxKB(二):Ubuntu24.04搭建maxkb开发环境

接上文&#xff1a;windows10搭建maxkb开发环境&#xff08;劝退指南&#xff09; 上文在windows10环境搭建maxkb开发环境遇到各种坑&#xff0c;后面就转战ubuntu平台&#xff0c;果然比较顺利的完成开发环境搭建。当然遇到相关的问题还是可以参考上文《windows10搭建maxkb开发…

拟合与插值|线性最小二乘拟合|非线性最小二乘拟合|一维插值|二维插值

挖掘数据背后的规律是数学建模的重要任务&#xff0c;拟合与插值是常用的分析方法 掌握拟合与插值的基本概念和方法熟悉Matlab相关程序实现能够从数据中挖掘数学规律 拟合问题的基本提法 拟合问题的概念 已知一组数据(以二维为例)&#xff0c;即平面上n个点 ( x i , y i ) …

C语言指针详解-上

C语言指针详解-上 前言1.指针的基本概念1.1指针是什么1.2指针的声明与初始化1.3取地址符&和解引用符*& 运算符用于**获取变量的地址*** 运算符用于访问指针指向的值 2.指针的类型常见数据类型的指针指针与数组、字符串数组指针结构体指针函数指针二级指针void指针 3.指…

对零基础想转行网络安全同学的一点建议

最近有同学在后台留言&#xff0c;0基础怎么学网络安全&#xff1f;0基础可以转行做网络安全吗&#xff1f;以前也碰到过类似的问题&#xff0c;想了想&#xff0c;今天简单写一下。 我的回答是先了解&#xff0c;再入行。 具体怎么做呢&#xff1f; 首先&#xff0c;你要确…

滑动变阻器的未来发展趋势和前景如何?是否有替代品出现?

滑动变阻器是常见的电子元件&#xff0c;主要用于调节电路中的电阻值。随着科技的不断发展&#xff0c;滑动变阻器的未来发展趋势和前景也引起了广泛关注。 滑动变阻器的未来发展将更加注重智能化&#xff0c;随着物联网、人工智能等技术的快速发展&#xff0c;滑动变阻器也将与…

C语言 | Leetcode C语言题解之第347题前K个高频元素

题目&#xff1a; 题解&#xff1a; struct hash_table {int key;int val;// 查看 https://troydhanson.github.io/uthash/ 了解更多UT_hash_handle hh; };typedef struct hash_table* hash_ptr;struct pair {int first;int second; };void swap(struct pair* a, struct pair*…

YUM和NFS

文章目录 yum软件仓库的提供方式RPM软件包的来源Linux系统各家厂商用的安装源命令---yum 配置本地yum源具体操作 搭建ftp yum仓库环境具体操作实操环境服务端一、安装 vsftpd服务二、创建一个文件&#xff0c;并且挂载三、开启服务四、查看挂载 客户端五、备份六、搭建ftp yum仓…

【联想电脑】:使用拓展坞后转接HDMI,无法识别显示屏

项目场景&#xff1a; 作为一个嵌入式软件开发者&#xff0c;有两个外接屏幕&#xff0c;不足为奇。 但是在今天的使用电脑过程中&#xff0c;出现了接了一个拓展坞上面有HDMI接口&#xff0c;但是HDMI接口接上外接显示屏的时候电脑无法识别到&#xff0c;导致只有电脑直连的HD…

使用Docker-compose一键部署Wordpress平台

一、Docker-compose概述&#xff1a; docker-compose&#xff1a;单机容器编排 Dockerfile&#xff1a;先配置好文件&#xff0c;然后build&#xff0c;镜像——>容器。 docker-compose&#xff1a;即可基于Dockerfile&#xff0c;也可以基于镜像&#xff0c;可以一键式拉…

安全基础学习-SM4加密算法

SM4 是一种中国国家密码标准(GB/T 32907-2016)中定义的分组加密算法,又称为“中国商用密码算法SM4”。它是由中国国家密码管理局发布的,并广泛应用于金融、电子商务和其他需要数据加密的场景。 1、SM4 算法概述 SM4 是一种对称加密算法,意味着加密和解密使用相同的密钥。…

使用WINUI3 编写一个小软件1 C#

本篇主要是记录安装和运行的问题。 先说安装 因为我是WIN11&#xff0c;所以勾了&#xff0c;如果你是WIN10就不用勾选11那个&#xff0c;但是我不确定用11要不要10那个&#xff0c;所以就勾了&#xff0c;按安装手册来的。 2、创建项目 照着选就完事了&#xff0c;别选错 这…