NGINX项目实战

一、nginx四层代理

部署支持4层TCP/UDP代理的Nginx服务器

部署nginx服务器

编译安装必须要使用--with-stream参数开启4层代理模块。

[root@proxy ~]# rm -rf /usr/local/nginx/ #清理环境

[root@proxy nginx-1.16.1]# ./configure --with-http_ssl_module  --with-stream #开启SSL加密功能,开启4层反向代理功能

[root@proxy nginx-1.16.1]#  make && make install #编译并安装

配置Nginx服务器,添加服务器池,实现TCP/UDP反向代理功能

[root@proxy nginx-1.16.1]# vim /usr/local/nginx/conf/nginx.conf #在这里我们的配置不再是使用http协议,所以不能在配置到http里面

stream {

        upstream backend {

                server 192.168.2.100:22; #后端SSH服务器的IP和端口

                server 192.168.2.200:22;

        }

        server {

                listen 12345; #Nginx监听的端口

                proxy_pass backend;

        }

}

http {

.. ..

启动nginx

[root@proxy nginx-1.16.1]# /usr/local/nginx/sbin/nginx

注:[root@proxy nginx-1.22.1]# /usr/local/nginx/sbin/nginx -s reload

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

遇到这种情况,则:

[root@proxy nginx-1.22.1]# killall nginx

之后重新启动服务

客户端使用访问代理服务器测试轮询效果

[root@proxy nginx-1.16.1]# ssh 192.168.4.5 -p 12345

root@192.168.4.5's password:

[root@web1 ~]# exit

[root@proxy nginx-1.16.1]# ssh 192.168.4.5 -p 12345

root@192.168.4.5's password:

[root@web2 ~]#

二、nginx的优化方案

修改Nginx配置文件,自定义报错页面

[root@web1 ~ ]# vim /usr/local/nginx/conf/nginx.conf

.. ..

        error_page  404              /404.html;     #打开注释,自定义错误页面

.. ..

[root@web1 ~]# vim /usr/local/nginx/html/404.html

Oops,No NO no page

[root@web1 ~]# /usr/local/nginx/sbin/nginx

[root@web1 ~]#systemctl stop firewalld 

[root@web1 ~]# setenforce 0

优化后,使用浏览器访问不存在的页面,会提示自己定义的404.html页面

使用背景图片做报错页面

[root@web1 ~]# cp /usr/share/backgrounds/day.jpg  /usr/local/nginx/html

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf

        error_page  404              /day.jpg;

[root@web1 ~]# /usr/local/nginx/sbin/nginx -s reload

如何查看服务器状态信息(非常重要的功能)

编译安装时使用--with-http_stub_status_module开启状态页面模块

已升级的形式进行安装

[root@web1 ~]# cd

[root@web1 ~]# cd 桌面

[root@web1 ~]# cd nginx-1.22.1/

[root@web1 nginx-1.17.6]# ./configure --with-http_ssl_module  --with-http_stub_status_module #开启status状态页面

[root@web1 nginx-1.17.6]# make  #编译

[root@web1 nginx-1.17.6]# make install

注释掉之前做过的四层代理,要不会报错

[root@web1 nginx-1.17.6]# mv  /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old #进行备份

[root@web1 nginx-1.17.6]# cp objs/nginx /usr/local/nginx/sbin/  #objs下存放二进制程序,更新版本

[root@web1 nginx-1.17.6]# make upgrade 检查nginx是否正常

[root@web1 nginx-1.17.6]# /usr/local/nginx/sbin/nginx -V

修改配置文件

[root@web1 nginx-1.17.6]# vim /usr/local/nginx/conf/nginx.conf #新添加

        location /status {

                stub_status on;

        }

[root@web1 nginx-1.17.6]# /usr/local/nginx/sbin/nginx -s reload

优化后,查看状态页面信息

[root@web1 ~]# curl 192.168.2.100/status

Active connections: 1

server accepts handled requests

 2 2 8 #nginx的累计值,

Reading: 0 Writing: 1 Waiting: 0

Active connections:当前活动的连接数量(实时并发连接数)。

Accepts:已经接受客户端的连接总数量。

Handled:已经处理客户端的连接总数量。(一般与accepts一致,除非服务器限制了连接数量)。

Requests:客户端发送的请求数量。

Reading:当前服务器正在读取客户端请求头的数量。

Writing:当前服务器正在写响应信息的数量。

Waiting:当前多少客户端在等待服务器的响应。

nginx的优化方案(下)

 优化并发连接数

优化前使用ab高并发测试

[root@web1 ~]# rpm -qa httpd-tools

[root@web1 ~]# ab -c 100 -n 100 http://192.168.2.100/ #-c代表总人数,-n代表总访问量必须加/

[root@web1 ~]# ab -c 2000 -n 2000 http://192.168.2.100/

socket: Too many open files (24)               #提示打开文件数量过多

修改Nginx配置文件,增加并发量

cpu处理器图形模式查看,改成2个

[root@web1 ~]# lscpu

[root@web1 ~ ]# vim /usr/local/nginx/conf/nginx.conf

.. ..

worker_processes  2; #与CPU核心数量一致

events {

    worker_connections  50000; #每个worker最大并发连接数

}

[root@web1 ~]# /usr/local/nginx/sbin/nginx -s reload

[root@web1 ~]#  ab -c 2000 -n 2000 http://192.168.2.100/ #再次测试,依旧报错

优化Linux内核参数(最大文件数量)

[root@web1 ~]# ulimit -a #查看所有属性值

open files                      (-n) 1024 #打开文件数量

[root@web1 ~]# ulimit -n 100000 #更改打开的文件数量,修改内核限制(临时)

[root@web1 ~]#  ab -c 2000 -n 2000 http://192.168.2.100/

四、平滑升级

1、原理

(1)启动后完成配置加载和端⼝绑定等动作, 分离出指定数量的⼯

作⼦进程 ,这些⼦进程会持有监听端⼝的⽂件描述符 (fd),并通过

在该描述符上添加监听事件来接受连接。

(2)Nginx 主进程在启动完成后会进⼊等待状态,负责响应各类系

统消息,如 SIGCHLD、SIGHUPSIGUSR2 等。

(3)主进程⽀持的信号

TERM、INT:⽴刻退出

HUP:重新加载配置⽂件,使⽤新的配置启动⼯作进程,并逐步关闭旧进程

USR1:重新⽣成⽇志⽂件;

USR2:启动新的主进程,实现热升级

WINCH:逐步关闭⼯作进程及⼯作进程⽀持的信号

2、过程

(1)查看旧版nginx的编译参数;

(2)编译新版本 Nginx 源码包,安装路径需与旧版⼀致,注意: 不

要执⾏ make install;

(3)备份⼆进制可执⾏⽂件,⽤新版本的替换;

(4)确保配置⽂件⽆报错;

(5)发送USR2信号:向主进程(master) 发送USR2信号,Nginx 会

启动⼀个新版本的 master 进程和对应⼯作进程,和旧版⼀起处理请

求;

(7)发送QUIT 信号: 升级完毕,可向旧的 Nginx 主进程(master) 发

送 (QUIT、TERM、或者KILL)信号,使旧的主进程退出;

(8)验证nginx 版本号,并访问测试.

五、Nginx  web 缓存服务

Nginx 作为 Web 缓存服务器,它介于客户端和应⽤服务器之

间,当⽤户通过浏览器访问⼀个 URL 时,Web 缓存服务器会去

应⽤服务器获取要展示给⽤户的内容,将内容缓存到⾃⼰的服务

器上,当下⼀次请求到来时,如果访问的是同⼀个 URL,Web

缓存服务器就会直接将之前缓存的内容返回给客户端,⽽不是向

应⽤服务器再次发送请求。

Web 缓存降低了应⽤服务器、数据库的负载,减少了⽹络延

迟,提⾼了⽤户访问的响应速度,增强了⽤户的体验。

 

[root@server ~]# vim 
/usr/local/nginx/conf/nginx.conf
......省略部分配置信息......
http {include       mime.types;default_type  application/octet-stream;proxy_cache_path /usr/local/proxy_temp 
levels=1:2 keys_zone=cache_item:200m inactive=1d 
max_size=20g;#指定缓冲路径,指定缓存⽬录级别⼆层,指定缓存块名称和⼤
⼩,指定缓存数据存储时间,指定占⽤硬盘最⼤值20g
......省略部分配置信息......location / {proxy_cache cache item;     #指定缓
冲区proxy_cache_key 
$schemesproxy_hostsrequest_uri;   #指定参数key值proxy_cache_valid 200 5d;   #返回值
200缓存5天proxy_cache_valid 404 30s;  #返回值
404缓存30秒proxy_cache_valid any 1m;   #其他的
⼀分钟
proxy_pass http://192.168.33.11; 
#反向代理,将请求转发给后端web服务器}
......省略部分配置信息......
:wq
[root@server ~]# systemctl reload nginx.service
当反向代理缓存服务器搭建完成后,即使nginx服务关闭也可
以访问⾸⻚。

六、防盗链

作⽤:防盗链就是防⽌别⼈盗⽤服务器中的图⽚、⽂件、视频等
相关资源。在 nginx 中,通过 location + return 实现。1、搭建 nginx 主服务器	实例操作需要两台主机做防盗链操作,所以这⾥我⽤我的两台主
机(server:192.168.33.100)和(YH1:192.168.33.11)做防
盗链演示操作。
下⾯是 server:192.168.33.100 主机的搭建过程,代码及解释
如下:
[root@server ~]# vim 
/usr/local/nginx/conf/nginx.conf  #去nginx配置⽂件中
找到nginx存放⾸⻚索引⽂件的根⽬录43         location / {44             root   html;    #nginx⾸⻚索引⽂件的
根⽬录,默认在nginx软件⽬录下,也就
是/usr/local/nginx/html45             index  index.html index.htm; 
#nginx索引⽂件的格式46         }
:q   #因为配置⽂件未做修改,只是找需要的⽂件位置,所以q退出
即可,⽆需w再保存
[root@server ~]# vim 
/usr/local/nginx/html/index.html     #按照如下格式写
内容,什么意思不⽤细究1 <html>2         <head>3                 <title>192.168.33.100</title>4                 </head>5         <body>6                 192.168.33.100      #我的server
主机IP7                 <img src="./123.jpg"> 
#./123.jpg表示在/usr/local/nginx/html的123.jpg图⽚⽂
件,随便导⼊⼀张图⽚改成123.jpg即可8         </body>9 </html>
:wq
[root@server ~]# cd /usr/local/nginx/html/    #到这
个⽬录下
[root@server html]# ls
50x.html  微信截图_20230915204153.jpg  index.html 
#⼿动拖⼊⼀张jpg格式的图⽚,注意格式
[root@server html]# mv 微信截图_20230915204153.jpg 
123.jpg    #将图⽚改名为刚才在index.html中提到的123.jpg
[root@server html]# systemctl reload nginx.service 
#重载nginx,尽量以后少重启服务,避免到了企业中养成坏习惯	
2、测试访问主服务器
浏览器输⼊已经搭好的 nginx 主服务器,192.168.33.100
访问成功,如下图:	 

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

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

相关文章

Java 沙漏图案(Hour-glass Pattern)

给定正整数 n&#xff0c;以沙漏形式打印数字模式。示例&#xff1a; 输入&#xff1a;rows_no 7 输出&#xff1a; 1 2 3 4 5 6 7 2 3 4 5 6 7 3 4 5 6 7 4 5 6 7 5 6 7 6 7 7 6 7 5 6 7 4 5 6 7 3 4 5 6 7 2 3 4 5 6 7 1 2 3 4 5 6…

phpwamp集成环境中里在php7.1.5下安装php_redis扩展及mysql索引类型和索引方法笔记

一、phpwamp集成环境中里在php7.1.5下安装php_redis扩展 phpwamp集成环境使用起来非常方便&#xff0c;选择要启用的环境启动即可&#xff0c;可以非常方便地在apache,nginx&#xff0c;php各版本之间切换。启动后的界面如下图&#xff0c;不过在使用phpwamp的过程中&#xff0…

C# 6.定时器 timer

使用控件&#xff1a; 开启定时器&#xff1a;timer1.Start(); 关闭定时器&#xff1a;timer1.Stop(); 定时间时间间隔:Interval timer1.Interval 1000; Interva等于1000是每一秒刷新一次 定时器默认时间间隔是100ms 代码创建定时器 ①创建 Timer t1 new Timer(); …

dotnet-starter-kit:一个Web API+Blazor多租户、模块化、简洁DDD架构!

推荐一个Web APIBlazor多租户、模块化、简洁DDD项目框架。 01 项目简介 dotnet-starter-kit是一个基于 .NET 8 的开源项目&#xff0c;架构构建基于 Clean Architecture 原则的解决方案。支持多租户、模块化&#xff0c;一个开箱即用的项目&#xff0c;方便我们快速开发项目。…

lua 游戏架构 之 游戏 AI (八)ai_tbl 行为和优先级

定义一系列的AI行为类型和它们的优先级&#xff0c;以及一个映射表ai_tbl来关联每种AI行为类型与对应的脚本文件和优先级。以下是对代码的详细解释&#xff1a; lua 游戏架构 之 游戏 AI &#xff08;一&#xff09;ai_base-CSDN博客https://blog.csdn.net/heyuchang666/artic…

【C++题解】1069. 字符图形5-星号梯形

问题&#xff1a;1069. 字符图形5-星号梯形 类型&#xff1a;嵌套循环、图形输出 题目描述&#xff1a; 打印字符图形。 输入&#xff1a; 一个整数&#xff08; 0<n<10 &#xff09;。 输出&#xff1a; 一个字符图形。 样例&#xff1a; 输入&#xff1a; 3输…

【公式解释】《系统论》《控制论》《信息论》的共同重构:探索核心公式与深度解析

《系统论》《控制论》《信息论》的共同重构&#xff1a;探索核心公式与深度解析 关键词&#xff1a;系统论、控制论、信息论、状态空间方程、系统矩阵。 Keywords: System theory, Control theory, Information theory, State-space equations, System matrices. 核心公式与…

访问控制列表(ACL)

文章目录 ACL原理与基本配置ACL分类ACL组成ACL规则的匹配与应用 ACL原理与基本配置 ACL(Access Control List&#xff0c;访问控制列表) 读取二层、三层、四层报文信息根据预先定义好的规则对报文进行过滤和分类实现网络访问控制、防止网络攻击和提高网络带宽利用率等目的提高…

Linux(虚拟机)的介绍

Linux介绍 常见的操作系统 Windows&#xff1a;微软公司开发的一款桌面操作系统&#xff08;闭源系统&#xff09;。版本有dos&#xff0c;win98&#xff0c;win NT&#xff0c;win XP , win7, win vista. win8, win10&#xff0c;win11。服务器操作系统&#xff1a;winserve…

论文阅读【检测】:商汤 ICLR2021 | Deformable DETR

文章目录 论文地址AbstractMotivation技术细节多尺度backbone特征MSDeformAttention 小结 论文地址 Deformable DETR 推荐视频&#xff1a;bilibili Abstract DETR消除对目标检测中许多手工设计的组件的需求&#xff0c;同时表现出良好的性能。然而&#xff0c;由于Transfor…

学习笔记之JAVA篇(0724)

p 方法 方法声明格式&#xff1a; [修饰符1 修饰符2 ...] 返回值类型 方法名&#xff08;形式参数列表&#xff09;{ java语句;......; } 方法调用方式 普通方法对象.方法名&#xff08;实参列表&#xff09;静态方法类名.方法名&#xff08;实参列表&#xff09; 方法的详…

软考:软件设计师 — 7.软件工程

七. 软件工程 1. 软件工程概述 &#xff08;1&#xff09;软件生存周期 &#xff08;2&#xff09;软件过程 软件开发中所遵循的路线图称为 "软件过程"。 针对管理软件开发的整个过程&#xff0c;提出了两个模型&#xff1a;能力成熟度模型&#xff08;CMM&#…

unity2D游戏开发06稳定,材质,碰撞器

稳定性 在操控玩家时,我们会发现玩家移动时,摄像头会有抖动,这是摄像机过度精确造成的。 创建名为RoundCameraPos的C#脚本,用Visual Studio打开 代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine;//导入Cinemac…

DC系列靶场---DC 3靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sS -sV -T4 -p- -O 172.30.1.142//-sS TCP的SYN扫描 //-sV 服务版本检测 //-T4 野蛮的扫描&#xff08;常用&#xff09; //-O 识别操作系统 使用Nmap扫描只看到一个80端口&#xff0c;Apache的2.4.18版本。 http探测 使用Wappalyzer插件可以到…

SN65MLVD080使用手册

8通道半双工M-LVDS线路收发器 特性 低压差分30欧姆至55欧姆线路驱动器和接收器&#xff0c;支持信号速率高达250 Mbps&#xff1b;时钟频率高达125 MHz 满足或超过M-LVDS标准TIA/EIA-899多点数据交换规范 受控驱动器输出电压转换时间&#xff0c;提高信号质量 -1V至3.4V共模…

QQ微信头像制图工具箱小程序纯前端源码

QQ微信头像制图工具箱小程序纯前端源码&#xff0c;主要功能有文字九格、头像挂件生成、爆趣九宫格、形状九宫格、创意长图、情侣头像、猫狗交流器。 这个QQ微信小程序源码是纯前端的&#xff0c;基本上拿去就可以用&#xff0c;不过好像调用了很多API&#xff0c;由于最近时间…

前端web开发HTML+CSS3+移动web(0基础,超详细)——第1天

一、开发坏境的准备 1&#xff0c;在微软商店下载并安装VS Code 以及谷歌浏览器或者其他浏览器&#xff08;我这里使用的是Microsoft Edge&#xff09; 2&#xff0c;打开vs code &#xff0c;在电脑桌面新建一个文件夹命名为code&#xff0c;将文件夹拖拽到vs code 中的右边…

空气处理机组系统中的设计和选型参考

1、静压的选择&#xff1a; 1.机组所承受的正压值和负压值既不是指机组的机外静压&#xff0c;也不是指风机的压头&#xff0c;而是指机组内部与机组外部大气压的差值&#xff0c;具体的计算方法如下&#xff1a; 如图所示&#xff0c;机组的新、回、送风管阻力分别为A、B、C帕…

【轨物方案】开关柜在线监测物联网解决方案

随着物联网技术的发展&#xff0c;电力设备状态监测技术也得到了迅速发展。传统的电力成套开关柜设备状态监测方法主要采用人工巡检和定期维护的方式&#xff0c;这种方法不仅效率低下&#xff0c;而且难以保证设备的实时性和安全性。因此&#xff0c;基于物联网技术的成套开关…

Qt自定义MessageToast

效果&#xff1a; 文字长度自适应&#xff0c;自动居中到parent&#xff0c;会透明渐变消失。 CustomToast::MessageToast(QS("最多添加50张图片"),this);1. CustomToast.h #pragma once#include <QFrame>class CustomToast : public QFrame {Q_OBJECT pub…