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

news2024/11/16 17:31:38

目录

🎫 前言

🎉 开篇福利

🎁 开篇福利 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.coloradmin.cn/o/1688006.html

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

相关文章

HTTP协议请求报头(header)

目录 目录 User-Agent与Referer User-Agent Referer Cookie HTTP报头(header)的结构是“键值对”结构,每个键值对占一行,键和值之间使用分号分隔。 报头的种类有很多,本次介绍几个重要的。 Host:表示请…

中电金信:从系统升级入手 看这些银行如何激活信贷业务

近期,我国金融机构围绕科技金融、绿色金融、普惠金融、养老金融、数字金融五篇大文章,持续优化信贷结构,不断增强金融服务实体经济作用。金融业认真落实国家经济发展目标,不断优化资金投向结构,持续加大重大战略、重点…

robosuite导入自定义机器人

目录 目的:案例一:成果展示具体步骤:URDF文件准备xml文件生成xml修改机器人构建 目的: 实现其他标准/非标准机器人的构建 案例一: 成果展示 添加机器人JAKA ZU 7 这个模型 具体步骤: URDF文件准备 从…

解决小皮面版搭建php网站数据库连接不了

首先进入mysql bin目录下 并执行cmd mysql -u root -pCREATE USER userlocalhost IDENTIFIED BY pass;GRANT ALL PRIVILEGES ON *.* TO userlocalhost;GRANT SELECT, INSERT, UPDATE ON database_name.* TO xxwlocalhost;FLUSH PRIVILEGES;select host ,user from mysql.user…

数据防泄漏系统哪个好用,给文件加密的软件

数据防泄露(Data Leakage Prevention,DLP)是指通过一定的技术手段,防止组织指定(重要或敏感的)数据或信息资产以违反安全策略规定的形式流出组织的一种策略。 信息防泄露以文档加密技术为核心,…

urllib_post请求_百度翻译

打开百度翻译,并打开控制台,输入spider,然后在网络中找到对应的接口,可以看出,该url是post请求 在此案例中找到的接口为sug,依据为: 可以看到,传递的数据为kw : XXX, 所…

Excel 下划线转驼峰

Excel 下划线转驼峰 LOWER(LEFT(SUBSTITUTE(PROER(A1),"_",""),1))&RIGHT(SUBSTITUTE(PROPER(A1),"_",""),LEN(SUBSTITUTE(PROPER(A1),"_",""))-1)

内脏油脂是什么?如何减掉?

真想减的人,减胖是很容易的,但想要形体美又健康,还是得从减内脏油脂开始,那么,问题来了,什么是内脏油脂? 油脂它分部于身体的各个角落,四肢、腹部、腰、臀部、脸、脖子...等&#xf…

Nginx实现负载均衡与故障检查自动切换

创作灵感来源于个人项目的一个稳定性规划,单节点的项目稳定性方面可能有很大的缺漏,因此需要升级为多节点,保证服务故障后,依然有其他服务可用,不会给前端用户造成影响。 (前面讲选型,想直接看…

传统蓝牙模块BR/EDR与低功耗蓝牙模块有什么区别?

传统蓝牙模块BR/EDR与低功耗蓝牙模块有什么区别?下面跟随美迅物联网MesoonRF从多个维度来了解。   概述:低功耗蓝牙采用了高斯频移键控(GFSK)。这里我们先抛开蓝牙的协议,单纯从Radio的角度看收发通信,Ra…

新品 | Forge® 1GigE IP67工业相机助力智能农业、食品和饮料行业

近日,51camera的合作伙伴Teledyne FLIR IIS推出Forge 1GigE IP67,它是Forge系列的最新工业相机,旨在在恶劣的工业环境中运行,同时确保高效的生产能力。Forge 1GigE IP67致力于为工厂自动化提供先进成像系统的最新产品。 Forge 1GigE IP67相机…

【设计模式深度剖析】【3】【创建型】【抽象工厂模式】| 要和【工厂方法模式】对比加深理解

👈️上一篇:工厂方法模式 | 下一篇:建造者模式👉️ 目录 抽象工厂模式前言概览定义英文原话直译什么意思呢?(以运动型车族工厂,生产汽车、摩托产品为例) 类图4个角色抽象工厂(Abstract Fac…

美业系统源码美业SaaS系统-门店卡项已线下退款,需要作废怎么处理?

美业SaaS系统源码 连锁门店美业收银系统源码 收银管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 活动促销 PC管理后台、手机APP、iPad APP、微信小程序 1、加盟店卡项线下退款处理方法: 询问具体退款会员手机号和卡项,找到需要退款的订单号。…

jenkins自动化部署详解

一、准备相关软件 整个自动化部署的过程就是从git仓库拉取最新代码,然后使用maven进行构建代码,构建包构建好了之后,通过ssh发送到发布服务的linux服务器的目录,最后在此服务器上执行相关的linux命令进行发布。 此篇文章jenkins…

优思学院|六西格玛在人力资源管理(HR)的应用指南

有效的HR流程管理对于组织的成功至关重要。然而,许多组织在HR效率方面存在困难,导致员工流动率高、工作放弃率高、生产力低下、缺勤率高以及盈利能力下降。 六西格玛方法论可以用来识别改进领域并实施变革,从而使HR功能更加高效和有效。 这…

监控上网的软件有哪些?含泪推荐的电脑监控软件

监控上网的软件有很多,企业选择的时候应该遵循什么样的原则呢?鄙人愚见,认为以下四项原则是选择监控软件时首要考虑的。 1、功能需求: 监控软件不应该只是起到控制上网的作用,因为一些泄密行为可能是通过USB接口、打印…

TI C2000 FLASH 模拟 EEPROM

简述 FLASH和EEPROM同为非易失存储器,互有优势。 FLASH Flash是非易失性存储器(NVM)的一种形式。相对于EEPROM,Flash具有更高的存储密度和更快的写入速度。Flash内部被分为多个扇区,每个扇区都可以单独擦除和写入。但是寿命相比EEPROM较短,以TI芯片为例,flash擦写次数在…

Linux下的权限

目录 1.shell命令以及运行原理 1.1原理上初步理解shell外壳 1.1.1为什么要有shell外壳 1.1.2shell外壳是什么 1.1.3怎么办(shell外壳的基本运行原理) 2.Linux下的用户 3.Linux权限管理 3.1.文件访问者的分类(人) 3.2…

社交媒体数据恢复:LinkdIn

在我们的日常工作中,数据丢失是一个非常棘手的问题。但是,如果你懂得如何进行数据恢复,那么这个问题就不再那么可怕了。本文将为您提供一份详细的LinkedIn数据恢复教程,帮助您找回丢失的数据。 首先,我们需要了解为什…