(全面)Nginx格式化插件,Nginx生产工具,Nginx常用命令

目录

🎫 前言

🎉 开篇福利

🎁 开篇福利 x2  Double happiness

# 介绍

# 地址

# 下载

💻 命令及解析

# 整个文件系统中搜索名为nginx.conf的文件

# 编辑nginx.conf文件

# 重新加载配置文件

# 快速查找nginx.conf文件并使用vim编辑器打开它

# 默认80端口代理配置

# 设置一个简单的代理服务器

# 反向代理

# 负载均衡

## RR策略

## 权重 

## ip_hash

## fair(第三方)

## url_hash(第三方) 

## rewrite

# 压缩和解压缩


🎫 前言

1. nginx官网地址:nginx news

2. 实践以下代码功能,需要服务器

        方案a. 虚拟机 : 参阅 http://t.csdnimg.cn/Y7QYA

        方案b. 云服务器:参阅 http://t.csdnimg.cn/iRkv3

3. 阿里云 云服务器 ECS 购买直达:云小站_专享特惠_云产品推荐-阿里云

🎉 开篇福利

vscode可安装  nginx-formatter  插件

创建一个  nginx.conf  文件

在linux系统中,使用FinalShell工具SSH链接服务器,查看 nginx.conf 文件内容

sudo cat /etc/nginx/nginx.conf

复制到本地 nginx.conf 文件中,对其代码右键,选择  使用...格式化文档  

选择  nginx-formatter  

这样看起来就舒服多了,也可以在本地编辑好之后写入到服务中。


🎁 开篇福利 x2  Double happiness

# 介绍

NGINX 配置配置高性能、安全、稳定的NGINX服务器的最简单方法。

# 地址

NGINXConfig | DigitalOcean

# 下载

下载 生成的配置:   nginxconfig.io-example.com.tar.gz
然后 上传 到你的服务器的 /etc/nginx 目录.

或, 复制压缩配置的base64字符串,将其粘贴到服务器的命令行并执行。

a.进入你的 NGINX服务器上的配置目录:

cd /etc/nginx

b.创建当前NGINX配置的备份:

tar -czvf nginx_$(date +'%F_%H-%M-%S').tar.gz nginx.conf sites-available/ sites-enabled/ nginxconfig.io/

c.使用tar解压新的压缩配置

tar -xzvf nginxconfig.io-example.com.tar.gz | xargs chmod 0644


💻 命令及解析

# 整个文件系统中搜索名为nginx.conf的文件

sudo find / -name "nginx.conf"

# 编辑nginx.conf文件

vim /etc/nginx/nginx.conf

# 重新加载配置文件

nginx -s reload# windows
nginx.exe -s reload

# 快速查找nginx.conf文件并使用vim编辑器打开它

find /etc/nginx -name "nginx.conf" -exec vim {} \;

# 默认80端口代理配置

# 访问 https://www.example.com/,nginx指向服务端的/www/wwwroot目录,并寻找index.html文件。
# 访问 https://www.example.com/images/example.jpg,nginx指向服务端的/www/images目录,并寻找example.jpg文件。http {server {location / {root /www/wwwroot;}location /images/ {root /www;}}
}

# 设置一个简单的代理服务器

# 新服务(服务处理)
server {listen 8080;root /www/wwwroot;location / {}
}# 代理配置,数据转发
server {location / {proxy_pass http://localhost:8080;}location ~ \.(gif|jpg|png)$ {root /www/images;}
}

# 反向代理

server {  listen       80;                                                        server_name  localhost;                                              client_max_body_size 1024M;location / {proxy_pass http://localhost:8080;proxy_set_header Host $host:$server_port;}
}

# 负载均衡

## RR策略
upstream vinca {server localhost:8080;server localhost:8081;
}
server {listen 81;server_name localhost;client_max_body_size 1024M;location / {proxy_pass http://vinca;proxy_set_header Host $host:$server_port;}
}

## 权重 
upstream vinca {server localhost:8080 weight=9;server localhost:8081 weight=1;
}
  1. 在Nginx的upstream块中,weight参数用于指定服务器的权重。权重越高,服务器在负载均衡时被选中的概率就越大。
  2. 示例中,upstream块定义了名为"vinca"的后端服务器组,其中包含了2个服务器。第一个服务器的配置:server localhost:8000 weight=9;
  3. 这里的weight=9表示该服务器的权重是9。而另外一个服务器没有显式的指定权重,因此它们的默认权重为1。
  4. 在请求分发时,Nginx会根据服务器的权重比例来选择哪个服务器处理请求。由于第一个服务器的权重是9,而其他服务器的权重是默认的1,所以第一个服务器被选中的概率要高于另外一个服务器。
  5. 通过调整服务器的权重,可以在负载均衡时实现更为精细的控制,将请求按照一定比例分配给不同的服务器。

## ip_hash
upstream vinca {ip_hash;server localhost:8080;server localhost:8081;
}
  1. 在上述示例中,ip_hash是Nginx的负载均衡算法之一。它的作用是基于客户端IP地址来实现会话粘性(Session Affinity),也称为IP哈希负载均衡。
  2. 当使用ip_hash时,Nginx通过计算客户端IP地址的哈希值,将每个请求分配给一台服务器。一旦确定了一个客户端请求应该被分派到的特定服务器,后续该客户端的所有请求都将被发送到同一台服务器上,从而实现会话的保持。
  3. 这在某些情况下非常有用,例如当你的应用程序需要确保用户的会话状态始终保持在同一台后端服务器上时。通过使用ip_hash,可以确保同一IP地址的客户端请求都被分发到相同的后端服务器,从而避免了会话状态的丢失。
  4. 需要注意的是,ip_hash算法可能会导致负载不均衡的问题,因为某些IP地址可能会产生更多的请求。如果你的后端服务器能够处理不同IP地址之间的请求不平衡,并且你需要确保会话粘性,那么ip_hash是一个可行的负载均衡选择。

## fair(第三方)
upstream backend {fair;server localhost:8080;server localhost:8081;
}
  1. 在这段代码中,upstream块定义了一个名为"backend"的后端服务器组。同时使用了fair参数,这表明Nginx将使用fair模块来进行负载均衡。
  2. fair模块是Nginx的第三方扩展模块,它提供了一种称为"fair load balancing"的负载均衡算法。fair load balancing算法旨在更加公平地分配请求到后端服务器,而不是简单地根据权重或者轮询来进行分发。
  3. fair模块会考虑每个后端服务器的当前连接数和响应时间等因素,以便更合理地分配负载。具体来说,fair模块会根据服务器的响应时间和连接数动态地调整请求的分发,以确保每台服务器都能获得相对公平的负载。
  4. 通过使用fair,你可以让Nginx在进行负载均衡时更加智能地考虑每台服务器的负载情况,从而提高系统的性能和稳定性。
  5. 需要注意的是,fair模块并非Nginx自带的标准模块,它是一个可选的第三方模块,因此在使用前需要确保该模块已经被正确编译并加载到Nginx中。

## url_hash(第三方) 
upstream backend {hash $request_uri;hash_method crc32;server localhost:8080;server localhost:8081;
}

这段Nginx配置代码定义了一个名为"backend"的后端服务器组。它使用了hash指令来进行负载均衡,并指定了哈希算法和哈希键。

具体解释如下:

  1. hash $request_uri;:这行代码指定了使用$request_uri作为哈希键。每个请求的URI将被计算哈希值,以决定将请求发送到哪台后端服务器。
  2. hash_method crc32;:这行代码指定了使用CRC32算法作为哈希算法。CRC32是一种快速的哈希算法,用于计算请求URI的哈希值。
  3. server localhost:8080;server localhost:8081;:这两行代码定义了两台后端服务器的地址和端口。

通过使用哈希负载均衡,可以根据请求的URI将请求分发到后端服务器。相同URI的请求将始终被分发到相同的后端服务器,这有助于在缓存中提高命中率,并实现会话粘性。

注意事项:

  • 使用哈希负载均衡时,必须小心选择哈希键。选择不合适的哈希键可能导致负载不均衡,因为某些URI可能会更频繁地访问。
  • 如果后端服务器的数量发生变化(增加或减少),哈希负载均衡可能会导致请求分布不均匀。在这种情况下,需要考虑重新平衡或调整哈希键的选择。
  • 哈希负载均衡可能会导致请求集中于少数后端服务器,而其他服务器的负载较轻。这可能会对系统的性能和可扩展性产生影响,因此需要根据实际情况进行评估和调整。
  • 请确保CRC32哈希算法已经编译到你的Nginx版本中,否则可能需要重新编译或选择其他可用的哈希算法。

总结:哈希负载均衡是一种根据请求URI进行分发的方法,可以在特定情况下提供更好的性能和会话粘性。但在使用时需谨慎选择哈希键,并根据实际情况进行评估和调整。

## rewrite

当需要为不同设备(如PC端和移动端)定制不同的页面重定向时,可以使用Nginx的rewrite模块来实现。以下是一个简单易懂的PC端和移动端重写方案:

server {listen 80;server_name example.com;# PC端重定向规则location / {if ($http_user_agent ~* (android|iphone|ipad)) {# 移动端访问,重定向到移动端页面rewrite ^(.*)$ /mobile$1 last;}# PC端访问,保持原样}# 移动端重定向规则location /mobile {# 处理移动端页面请求}
}

1. listen 80;:监听80端口,接收HTTP请求。

2. server_name example.com;:配置服务器名,替换成实际的域名。

3. PC端重定向规则:

  • location /:匹配所有请求。
  • if ($http_user_agent ~* (android|iphone|ipad)):使用$http_user_agent变量检查用户代理,判断是否为移动设备。
  • rewrite ^(.*)$ /mobile$1 last;:如果是移动设备访问,则重写URL,在请求路径前加上"/mobile",并使用last标志表示终止当前location的处理。

4.移动端重定向规则:

  • location /mobile:匹配以/mobile开头的请求,用于处理移动端页面请求。

代码配置中,当用户通过移动设备访问网站时,Nginx会根据用户代理信息判断其为移动设备,然后重写URL以将请求路由到/mobile路径下,从而展示移动端页面。对于PC端访问,则保持原样,不做任何重定向处理。

需要注意的是,使用rewrite时要谨慎考虑正则表达式的匹配和重写规则,避免出现意外的行为。此外,对于移动端重定向,也可以使用Nginx的map模块结合变量来实现更灵活的设备识别和重定向规则。

# 压缩和解压缩

http {gzip on;                     # 开启gzip压缩功能gzip_min_length 1000;        # 设置最小压缩文件大小gzip_types text/plain text/css application/javascript;  # 设置需要进行gzip压缩的文件类型gzip_proxied any;            # 启用所有可能的gzip压缩代理server {listen 80;server_name example.com;location / {# 处理请求}location /compressed {gunzip on;  # 允许对请求进行解压缩# 处理解压缩后的请求}}
}
  1. gzip on;:开启gzip压缩功能。启用后,Nginx会自动对符合条件的响应内容进行gzip压缩。
  2. gzip_min_length 1000;:设置最小压缩文件大小。仅当响应内容长度大于或等于1000字节时,才会进行压缩。
  3. gzip_types text/plain text/css application/javascript;:设置需要进行gzip压缩的文件类型。这里配置了常见的文本文件和JavaScript文件类型。
  4. gzip_proxied any;:启用所有可能的gzip压缩代理。这样可以确保在与反向代理或负载均衡等情况下仍能正确压缩响应内容。
  5. location /compressed:匹配以/compressed开头的请求路径。
  6. gunzip on;:允许对请求进行解压缩。在该location中,Nginx会自动解压请求内容。

在代码中,当收到客户端发起的请求时,Nginx会判断响应内容是否符合gzip压缩条件,并进行相应处理。如果响应内容长度达到设定的最小压缩文件大小,并且内容类型匹配gzip_types指定的文件类型,Nginx会对响应内容进行gzip压缩。对于带有/compressed路径的请求,Nginx会自动解压请求内容。

需要注意的是,gzip压缩会消耗一定的CPU资源,而解压缩也会增加服务器的负担。因此,在配置gzip时需要权衡压缩和解压缩的效益与资源消耗,并根据实际情况进行调整。


 以上就是个人整理的nginx实战经验,欢迎评论留言。

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

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

相关文章

建筑施工突发事故应急处置vr安全培训平台

在不断发展的时代背景下,掌握必要的应急安全知识已成为我们生活中不可或缺的一部分。由央企携手我们华锐推出的3D线上应急宣教虚拟体验馆,标志着民众应急安全教育的全新里程碑,不仅突破了传统学习模式的局限,还让每个人都能在灵活…

防火墙技术基础篇:基于IP地址的转发策略

防火墙技术基础篇:基于IP地址的转发策略的应用场景及实现 什么是基于IP地址的转发策略? 基于IP地址的转发策略是一种网络管理方法,它允许根据目标IP地址来选择数据包的转发路径。这种策略比传统的基于目的地地址的路由更灵活,因…

深度学习之Python+OpenCV+Tensorflow实时人体检测和计数

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习之PythonOpenCVTensorflow实时人体检测和计数项目简介 一、项目背景与意义 随着科技的不断发展&#xff…

Java - JsonPath 特殊场景解决方案

我们先看下JSONPath的使用,这里使用的是 GitHub - json-path/JsonPath: Java JsonPath implementation,其README中已经提供了相关的介绍和使用示例,这里再简单介绍下,我们这里直接使用其中的示例数据。 {"store": {&quo…

macOS 安装a d b

brew install android-platform-tools

Go微服务: 日志系统ELK的应用

概述 基于前文,我们已经了解并搭建完成ELK的所有环境了,现在我们来结合应用程序来使用ELK参考前文:https://active.blog.csdn.net/article/details/138898538 封装日志模块 在通用工具模块: gitee.com/go-micro-services/common 这个包是通…

CTFHUB技能树——SSRF(三)

目录 URL Bypass 数字IP Bypass 302跳转 Bypass DNS重绑定 Bypass SSRF绕过方法: (1) http://abc.com127.0.0.1 (2)添加端口号 http://127.0.0.1:8080 (3)短地址 htt…

限制U盘使用:企业数据安全的软件解决方案

在当今数字化办公环境中,U盘作为一种便捷的数据传输工具,其使用在企业内部非常普遍。然而,U盘的不当使用也给企业数据安全带来了巨大风险。为了防止数据泄露和病毒传播,企业需要采取有效的软件解决方案来限制U盘的使用。本文将探讨…

linux使用dockerCompose脚本化部署镜像

1.根据实际修改docker-compose.yml文件: version: 3.5 services:#mysql数据库脚本mysql:image: 镜像名:版本 #需要查看本地镜像进行填写。同下container_name: mysql #容器名,同下restart: alwaysports:- 3306:3306 #第一个3306为主机…

Java中解决跨域的几种方法

一、 什么是跨域(同源策略) 同源的定义:如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源 1,用户在浏览器输入的URL中包含的协议、域名、端口都完全相同。如果有一项不同&#xf…

【python005】python批量、动态调参请求接口(已更新)

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题。随着版本更新,做了一些变动,如商业化限制,取消一些语法等。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 文章目录 1.背景介绍2.单次接口请求总结代码片3.批量循环接口请求总结代码片4.持久化`…

机器人流程自动化与低代码流程自动化:技术革新的双重驱动

在数字化时代的浪潮中,企业对于高效、智能的工作流程的需求日益增强。在这一背景下,机器人流程自动化(RPA)和低代码流程自动化(Low-Code Automation)应运而生,成为推动企业数字化转型的重要力量…

docker容器安装mysql

linux: centOS-7 hadoop: 3.3.6 前置章节: (图文并茂)基于CentOS-7搭建hadoop3.3.6大数据集群-CSDN博客 可选:zookeeper安装教程-CSDN博客 1.安装docker 1.1 添加docker的repo源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/…

一个月速刷leetcodeHOT100 day08 两道DP题 一道子串

和为k的子数组 中等 提示 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: **输入:**nums [1,1,1], k 2 **输出:**2 示例 2: *…

集合、Collection接口特点和常用方法

1、集合介绍 对于保存多个数据使用的是数组,那么数组有不足的地方。比如, 长度开始时必须指定,而且一旦制定,不能更改。 保存的必须为同一类型的元素。 使用数组进行增加/删除元素的示意代码,也就是比较麻烦。 为…

一种简单实用的ollvm反混淆的方案与源码

我是一名从事反欺诈&风控&设备指纹相关的工作,最近对ollvm的如何逆向的问题进行了学习与思考。 ollvm是一个开源免费的so混淆工具,对于逆向的小白来说简直是灾难性的存在。 这个例子是超简单,我想每个人都可以学会跟掌握,…

RustGUI学习(iced/iced_aw)之扩展小部件(二十五):如何使用tab部件来创建tab多页面切换?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述 这是本专栏的第二十五篇,主要讲述tab页面切换部件的使用,会结…

[linux] bash中的单引号(‘)和双引号(“)

在命令行中,单引号()和双引号(")在某些情况下会有不同的效果,尤其是在涉及bash变量和特殊字符的解析时。在你给出的两个命令中: ps -ef|grep "tokenize"|grep -v grep|awk {print $2} 和 ps -ef|grep "tokenize"…

PCL点云边界提取——源码解析

文章目录 一、概述二、PCL边缘检测源码定位过程1、初始化2、检查输入点云是否稠密3、迭代处理每个点4、输出三、修改后的过程调用一、概述 在PCL中集成了一个非常经典的点云边缘检测算法,这个算法也在 PCL点云边界提取这篇博客中讲解了。该文章只介绍了AC算法的原理及接口调用…