nginx服务

web服务:
国外主流的网站服务还是apache
国内主流的网站服务是:nginx
Nginx网站服务
nginx是一个高性能、轻量级的web服务软件。
nginx的特点:
1.稳定性相对较高。(但是没有apache稳定)
2.系统资源消耗低。体现在处理htpp请求的并发能力很高,单台物理服务器可以处理3w-5w个并发请求。(一般在企业中为了保持服务器的稳定,并发量的设置一般在2w个左右。并发量在2w左右时,占用内存2M左右。keep-alive状态占用内存:3M左右)
nginx的主要功能:
1.静态文件服务:nginx可以直接提供静态文件的服务,HTML,CSS,JavaScript,图片等。能够高效的处理并且响应静态文件的请求。
2.反向代理:本身可以作为一个反向代理的服务器,将客户端的请求转发给后端多个服务器,可以实现负载均衡、高可用。提高整个集群的性能以及可靠性。
反向代理图解:
在这里插入图片描述
总结:反向代理的核心功能是:客户端在请求时,通过代理服务器,会把请求的流量按照轮询算法,转发到后台不同的服务器,实现负载均衡和高可用。
3.处理动态内容(nginx处理动态内容能力很差,apache很强,nginx需要依靠php node.js java python等来处理动态内容,nginx自身没有动态内容请求能力但是可以代理请求,发送到后端的动态服务器进行处理,动态服务器处理完成后,由nginx把动态请求响应给客户端)
4.SSl/TLS加密,HTTPS的加密方式,数字证书验证机制。
5.虚拟主机:nginx可以在一台服务器上设置多个主机,同一个服务器可以有多个域名和站点。
6.URL重定向。可以实现灵活的URL重写和重定向。
7.缓存功能,nginx自带缓存功能。(get才可以进行缓存,post不可以进行缓存)
在这里插入图片描述
8.nginx自带日志功能,可以详细的记录请求的信息,包括访问时间,请求路径ip地址,响应状态,有助于故障排查。(系统控制日志文件,记录在/var/log/messages。
业务日志在:access.log ;error.log;
access日志记录了谁访问了,都是访问成功的记录。error日志也是记录了谁访问过,但是记录的式失败的记录)
nginx的主要应用场景:
1.静态服务
2.反向代理,负载均衡
3.缓存服务
4.动态服务

面试题:
nginx是如何提高高并发的?
1.nginx自身代码的问题:大量的底层代码进行了优化,同时自带了一个功能模块****epoll模块,支持高并发。
2.nginx也是一个master进程控制多个work进程。master负载收集和分发请求,work是实际执行者。每一个请求进来时,master就会拉起一个work进程来处理请求。同时master进程也负责监控worker的状态,worker的数量和 cpu要一致或者是cpu的两倍。
work处理请求的过程中,只受内存大小的限制,所以可以处理多个请求,再加上nginx本身就是轻量级的服务,处理请求时占用的内存本身就很少,所以可以起到大并发的处理能力。
二者之间相互依赖,相互补充。

安装:nginx

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2、安装依赖包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel

3、创建运行用户、组
(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx

4、编译安装Nginx
cd /opt
tar zxvf nginx-1.22.0.tar.gz -C /opt/

cd nginx-1.22.0/
./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 \
--with-stream_realip_module
解释:
--prefix=/usr/local/nginx       指定了Nginx的安装目录。在这种情况下,它将安装在 /usr/local/nginx 目录下。
--user=nginx 和 --group=nginx  指定了运行Nginx进程的用户和组。在这种情况下,它将是用户和组 nginx。
--with-http_ssl_module         启用了对HTTP连接的SSL/TLS加密支持。
--with-http_v2_module          启用了对HTTP2.0协议的支持。
--with-http_realip_module      允许Nginx从X-Real-IP或X-Forwarded-For头部获取客户端的真实IP地址。
--with-http_stub_status_module 启用了 stub_status 模块,提供了访问Nginx状态信息的方法。
--with-http_gzip_static_module 启用了支持使用 .gz 扩展名提供预压缩文件的功能。
--with-pcre                    启用了对Perl Compatible Regular Expressions(PCRE)库的支持。
--with-stream                  启用了对TCP/UDP代理模块的支持。
--with-stream_ssl_module       启用了对TCP/UDP连接的SSL/TLS加密支持。
--with-stream_realip_module    允许Nginx从PROXY协议头部获取客户端的真实IP地址。
安装:
make && make install
chown -R nginx.nginx /usr/local/nginx #修改权限

安装好后生成四个文件功能如下

  1. conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,
    其他的.conf则是用来配置nginx相关的功能的.
    例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,
    配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。

  2. html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,
    另外还有一个50x的web文件是默认的错误页面提示页面。

  3. logs:用来保存nginx服务器的访问日志错误日志等日志,
    logs目录可以放在其他路径,比如/var/logs/nginx里面。

  4. sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能

ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ 创建一个指向/usr/local/nginx/sbin/nginx的软链接,并将其命名为/usr/sbin/nginx。这样就可以在/usr/sbin/目录下执行nginx命令来启动nginx服务

让系统识别nginx的操作命令

nginx -t:检查配置文件是否配置正确
nginx -v:查看nginx的版本号
nginx -s 向主进程传输信号,停止、开启 、重启、重新加载(nginx -s stop ;nginx-s start ;nginx -s reload)
nginx-c:设置配置文件的默认路径

nginx信号符号

信号符结合kill命令:
kill -USR1 pid号 #日志分割
kill -s HUP pid号 #重新加载(只要是kill只能跟pid号)
killall -s HUP nginx #重新加载或重启Nginx服务器(既可以跟服务名,也可以用pid)
kill -s QUIT pid号 #优雅退出,有人访问时不会结束进程,访问完成后才会结束进程。
kill -s WINCH pid号 #优雅的结束worker,直到请求完成才会结束worker进程。

nginx的yum安装方式:
必须需要epel源 (工作环境一般情况下不使用yum安装)

yum install -y epel-release
yum install nginx -y

nginx的配置文件:

vim/usr/local/nginx/conf/nginx.conf

【全局块】:全局生效,所有模块,所有用户都生效(stream 反向代理:四层代理,走的是tcp或者udp流量,不能写在http当中,只能写在全局配置)
在这里插入图片描述

面试题:
如何修改linux服务器,文件的最大打开数量:
1.临时:ulimit -n 65535 (linux最大只支持打开65535)
2.永久修改:vim /etc/security/limits.conf
65535 为Linux系统最大打开文件数

  • soft nproc 65535
  • hard nproc 65535
  • soft nofile 65535
  • hard nofile 65535
    注意:设置保存后,需要重新ssh连接才会看到配置更改的变化
    ulimit -a :查看linux服务器最大打开数量
    【events块】:影响nginx服务器和用户的网络连接。
    在这里插入图片描述
    【http块】:只针对http请求的配置、代理、缓存、虚拟主机、反向代理。(upstream反向代理指定服务器的命令,配置在http模块中)
    在这里插入图片描述

【server块】:包含在http模块中,不能单独设置

配置虚拟主机的相关参数,一个http模块当中可以由多个server块
在这里插入图片描述
【location块】:匹配uri,包含在server块中,也不能单独设置。
在这里插入图片描述
location模块中:
location / 中的 '/ '匹配的是uri,默认指的是:usr/local/nginx
root指向:/html
他俩做拼接即是: /usr/local/nginx/html/
root作用是拼接 ,拼接/后和root 后的目录(root指定的目录和location匹配的uri之间做的一个拼接,这两个目录都要真实存在,而且都是目录,并且在uri目录里面要有web文件)
alias:匹配指定路径下的web文件。
对于root后边有无/ 无所谓,但是alias后面加了/,访问时后也需要加/,否则匹配不到
root和alias区别:
root标签可以使用重定向
alias不可以使用重定向
【反向代理配置】:porxy_pass (在 location模块中)
在这里插入图片描述
upstream:七层代理,基于ip和端口,走http协议,只能写在http模块中。
stream:四层代理,走的是tcp或者udp流量,不能写在http当中,只能写在全局配置。

实验一:
访问统计状态统计

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
	server {
		listen 80;
		server_name www.my.com;
		charset utf-8;
		location / {
			root html;
			index index.html index.php;
		}
		##添加 stub_status 配置##
		location /status { 					
		#访问位置为/status
			stub_status on; 				
			#打开状态统计功能
			access_log off; 				
			#关闭此位置的日志记录
		}
	}
}

在这里插入图片描述
测试配置文件并退出:

nginx -t

在这里插入图片描述
重启nginx服务:

systemctl restart nginx

打开浏览器进行访问:http://20.0.0.105/status #IP地址为服务器ip
在这里插入图片描述
解释:
Active connections :表示当前的活动连接数;
server accepts handled requests:表示已经处理的连接信息,
三个数字依次表示:已处理的连接数、成功的TCP握手次数、 已处理的请求数。

实验二:
基于用户名和访问密码的控制
1.生成用户密码认证文件

yum install -y httpd-tools  ----httpasswd是工具,要先安装
htpasswd -c /usr/local/nginx/passwd.db zhangsan  创建一个用户,passwd.db存储用户信息
chown nginx /usr/local/nginx/passwd.db  只有root和nginx用户可以读
chmod 400 /usr/local/nginx/passwd.db

vim /usr/local/nginx/conf/nginx.conf
......
	server {
		location / {
			......
			
			    location /status {
              stub_status on;
                access_log off;
               ##添加认证配置##
                auth_basic "secret";
                auth_basic_user_file /usr/local/nginx/passwd.db;
          }

	}

在这里插入图片描述
测试配置文件并退出:

nginx -t

重启nginx服务:

systemctl restart nginx

打开浏览器进行访问:http://20.0.0.105/status #IP地址为服务器ip
在这里插入图片描述
在这里插入图片描述
实验三:
基于ip地址的访问规则:
访问控制规则如下:

deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

vim /usr/local/nginx/conf/nginx.conf
......
	server {
			......
			##添加控制规则##
			deny 20.0.0.101; 					#拒绝访问的客户端 IP
		
		}
	}

在这里插入图片描述

测试配置文件并退出:

 nginx -t

重启nginx服务

systemctl restart nginx

测试:
用20.0.0.101访问:curl 20.0.0.105

在这里插入图片描述
用20.0.0.102访问:curl 20.0.0.105

在这里插入图片描述
实验四:基于域名的 Nginx 虚拟主机

虚拟主机,创建多的主机器,基于一个主机创建多个页面。
1.域名类型:

为虚拟主机准备网页文档
mkdir -p /var/www/html/xiaoma
mkdir -p /var/www/html/xiaoyuan
echo “

www.xiaoma.com

” > /var/www/html/xiaoma/index.html
echo “

www.xiaoyuan.com

” > /var/www/html/xiaoyuan/index.html

修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
	server {
		listen 80;
		server_name www.xiaoma.com;					#设置域名www.xiaoma.com
		charset utf-8;
		access_log logs/www.xiaoma.access.log; 
		location / {
			root /var/www/html/xiaoma;					#设置www.xiaoma.com 的工作目录
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}
	
	server {
		listen 80;
		server_name www.xiaoyuan.com;					#设置域名www.xiaoyuan.com
		charset utf-8;
		access_log logs/www.xiaoyuan.access.log; 
		location / {
			root /var/www/html/xiaoyuan;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}	
}

在这里插入图片描述
测试配置文件并退出:

nginx -t

重启nginx服务

systemctl restart nginx.service 

测试:
在这里插入图片描述
IP地址类型:可以根据虚拟ip地址进行创建
2.基于端口的虚拟主机:

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
server {
		listen 20.0.0.105:80;					#设置监听地址
		server_name www.xiaoma.com;
		charset utf-8;
		access_log logs/www.xiaoma.access.log; 
		location / {
			root /var/www/html/xiaoma;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}

server {
	listen 20.0.0.120:80;					#设置虚拟监听地址
	server_name www.xiaoyuan.com;
	charset utf-8;
	access_log logs/www.xiaoyuan.access.log; 
	location / {
		root /var/www/html/xiaoyuan;
		index index.html index.php;
	}
	error_page 500 502 503 504 /50x.html;
	location = 50x.html{
		root html;
	}
}	
}

在这里插入图片描述
3.设置虚拟ip地址:

ifconfig ens33:0 20.0.0.120 netmask 255.255.255.0 

在这里插入图片描述
测试:www.20.0.0.120
在这里插入图片描述

www.20.0.0.105
在这里插入图片描述
4.基于端口的 Nginx 虚拟主机:

vim /usr/local/nginx/conf/nginx.conf
http {
......
server {
		listen 20.0.0.105:8080;					#设置监听地址
		server_name www.xiaoma.com;
		charset utf-8;
		access_log logs/www.xiaoma.access.log; 
		location / {
			root /var/www/html/xiaoma;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}

server {
	listen 20.0.0.105:9090;					#设置虚拟监听地址
	server_name www.xiaoyuan.com;
	charset utf-8;
	access_log logs/www.xiaoyuan.access.log; 
	location / {
		root /var/www/html/xiaoyuan;
		index index.html index.php;
	}
	error_page 500 502 503 504 /50x.html;
	location = 50x.html{
		root html;
	}
}	
}

在这里插入图片描述

nginx -t

重启nginx服务

systemctl restart nginx.service 

测试:www.20.0.0.105:8080
在这里插入图片描述

www.20.0.0.105:9090

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“科创中国”青百会轮值主席吴甜:以大语言模型为代表的AI将引发产业变革

8月1日,“科创中国”青年百人会(后文简称青百会)联合百度举办“青创汇”高端对话,围绕人工智能技术创新与产业发展交流研讨,同时正式成立“科创中国”青年百人会女性工作委员会。该委员会将鼓励更多女性投身科技创新事…

如何隐藏开源流媒体EasyPlayer.js视频H.265播放器的实时录像按钮?

目前我们TSINGSEE青犀视频所有的视频监控平台,集成的都是EasyPlayer.js版播放器,它属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,包括WebSocket-FLV、HTTP-FLV,HLS(m3u8&#x…

S7-200SMART与ET200SP远程IO模块进行PROFINET通信的具体方法

S7-200SMART与ET200SP远程IO模块进行PROFINET通信的具体方法 使用前提: 只有标准型且固件版本为V2.4及以上的S7-200 SMART CPU才支持 PROFINET 控制器功能。 S7-200 SMART 作 PROFINET 控制器最多可带8个 IO 设备(例如:远程 IO、阀岛、变频器、伺服和机器人等)。 本例中以 …

【C# 基础精讲】为什么选择C# ?

C#(C Sharp)是由微软开发的一种通用、面向对象的编程语言。它最初于2000年发布,自那时以来逐渐成为开发者的首选之一。C#的设计目标是提供一种简单、现代、可靠且安全的编程语言,使开发者能够轻松构建各种类型的应用程序。 为什么…

Element-plus中tooltip 提示框修改宽度——解决方案

tooltip 提示框修改宽度方法&#xff1a; 在element中&#xff0c;想要设置表格的内容&#xff0c;超出部分隐藏&#xff0c;鼠标悬浮提示 可以在el-table 上添加show-overflow-tooltip属性 同时可以通过tooltip-options配置提示信息 如下图代码 <el-tableshow-overflo…

Cocos creator(2d) 使用 shader + uv 实现单张图片衔接滚动效果

在游戏中&#xff0c;当我们需要让背景图片无缝衔接无限滚动时(打飞机这种背景一直滚动&#xff0c;或者肉鸽游戏地图一直在走等等)&#xff0c;通常的做法是 在游戏中放两个背景node&#xff0c;在update中控制这两张背景图片的移动&#xff0c;并让其收尾衔接即可。(具体代码…

EXCEL,多条件查询数字/文本内容的4种方法

目录 1 问题&#xff1a;如何根据多条件查询到想要的内容 2 方法总结 2.1 方法1&#xff1a; sumif() 和sumifs() 适合查找符合条件的多个数值之和 2.2 方法2&#xff1a;使用lookup(1,0/((区域1条件1)*(区域2条件2)*....),结果查询区域) 2.3 方法3&#xff1a;使用 ind…

19-2.vuex

目录 1 安装 2 挂载 2.1 vue2写法 2.2 vue3写法 3 state 3.1 声明数据 3.2 使用数据 3.3 处理数据 4 mutations 4.1 基本使用 4.2 传递参数 4.3 mutations中不能写异步的代码 5 actions 5.1 基本使用 5.2 传递参数 6 getters Vuex是做全局数据…

论文阅读- Uncovering Coordinated Networks on Social Media:Methods and Case Studies

链接&#xff1a;https://arxiv.org/pdf/2001.05658.pdf 目录 摘要&#xff1a; 引言 Methods Case Study 1: Account Handle Sharing Coordination Detection 分析 Case Study 2: Image Coordination Coordination Detection Analysis Case Study 3: Hashtag Sequen…

LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 论文阅读

论文信息 题目&#xff1a;LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM 作者&#xff1a;Devendra Singh Chaplot, Dhiraj Gandhi 项目地址&#xff1a;https://devendrachaplot.github.io/projects/Neural-SLAM 代码地址&#xff1a;https://github.com/devendrachaplot/N…

【Spring】(三)Spring 使用注解存储和读取 Bean对象

文章目录 前言一、使用注解储存 Bean 对象1.1 配置扫描路径1.2 类注解储存 Bean 对象1.2.1 Controller&#xff08;控制器存储&#xff09;1.2.2 Service&#xff08;服务储存&#xff09;1.2.3 Repository&#xff08;仓库存储&#xff09;1.2.4 Component&#xff08;组件储存…

【java安全】原生反序列化利用链JDK7u21

文章目录 【java安全】原生反序列化利用链JDK7u21前言原理equalsImpl()如何调用equalsImpl()&#xff1f;HashSet通过反序列化间接执行equals()方法如何使hash相等&#xff1f; 思路整理POCGadget为什么在HashSet#add()前要将HashMap的value设为其他值&#xff1f; 【java安全】…

真我V3 5G(RMX2200 RMX2201)解锁刷机全过程

安卓系统新Rom包为GSI&#xff0c;更具有通用性&#xff0c;可以比较放心刷。 原厂系统垃圾多、广告多&#xff0c;甚至热点功能不支持ipv6&#xff0c;严重偏离热点机的定位。 主要参考 https://www.bilibili.com/read/cv20730877/https://www.bilibili.com/read/cv2073087…

Unity 引擎做残影效果——3、顶点偏移方式

Unity实现残影效果 大家好&#xff0c;我是阿赵。 继续讲Unity引擎的残影做法。这次的残影效果和之前两种不太一样&#xff0c;是通过顶点偏移来实现的。 具体的效果是这样&#xff1a; 与其说是残影&#xff0c;这种效果更像是移动速度很快时造成的速度线&#xff0c;所以在移…

机器学习深度学习——卷积的多输入多输出通道

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——从全连接层到卷积 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们有所帮…

高效构建 vivo 企业级网络流量分析系统

作者&#xff1a;vivo 互联网服务器团队- Ming Yujia 随着网络规模的快速发展&#xff0c;网络状况的良好与否已经直接关系到了企业的日常收益&#xff0c;故障中的每一秒都会导致大量的用户流失与经济亏损。因此&#xff0c;如何快速发现网络问题与定位异常流量已经成为大型企…

c高级:day3

作业: 1. 整理思维导图 2.判断家目录下,普通文件的个数和目录文件的个数 #!/bin/bash ######################################################################## # File Name: zy1.sh # Created Time: 2023年08月04日 星期五 19时13分08秒 ##############################…

面试之HashMap

1.什么是集合框架 Java的集合主要有两个根接口Collection和Map派生出来的&#xff0c;Collection派生出来了三个子接口&#xff1a;List,Queue,Set。因此Java集合大致可分为List,Queue,Set,Map四种体系结构。 2.HashMap与TreeMap HashMap是直接实现Map接口&#xff0c;而Tree…

线上通过Nginx部署前端工程,并且配置SSL

介绍、为了更好的帮助大家学习&#xff0c;减少歧义,IP地址我就不隐藏了&#xff0c;公司也是我自己的公司。你们就别来攻击了。 下面给出步骤: 一、前期准备工作 通过在目标服务器上安装宝塔面板、安装redis、mysql、nginx、jdk环境等 1、 2、前端工程通过npm run build 打…

【Elasticsearch】Elasticsearch快速入门,掌握这些刚刚好!(官网入门案例)

文章目录 1. 简介2. 相关概念3. 安装4. 集群状态查看5. 索引操作6. 文档操作7. 数据搜索数据准备搜索入门(match_all)条件搜索(match)组合搜索(bool)过滤搜索(filter)搜索聚合(aggs) 8. 参考资料 本文的主要功能是带领从0到1入门Elasticsearch的基础使用&#xff0c;重点是Elas…