(全面)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实战经验,欢迎评论留言。

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

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

相关文章

python的协程异步

参考资料 https://blog.csdn.net/qq_43380180/article/details/111573642?spm1001.2014.3001.5506 协程的概念 指的是在一个线程中,可以在某个地方挂起的特殊函数,并且可以重新在挂起处继续运行。协程不是进程,也不是线程。 进程 VS 线程…

Polar 上传

Polar 上传 开题&#xff0c;是一个文件上传界面 对文件后缀有过滤 测试了一下是黑名单&#xff0c;过滤了php相关的文件&#xff0c;但是没过滤.ini、.htaccess后缀的文件 对内容的过滤是<?、file&#xff0c;所以不能用.user.ini配置文件绕过 我们选择使用.htaccess配置…

晶体振荡器

一、晶振与晶体区别 晶振是有源晶振的简称&#xff0c;又叫振荡器&#xff0c;英文名称是oscillator&#xff0c;内部有时钟电路&#xff0c;只需供电便可产生振荡信号&#xff1b;晶体是无源晶振的简称&#xff0c;也叫谐振器&#xff0c;英文名称是crystal&#xff0c;是无极…

第197题|奇偶性的四则运算,你掌握了吗?|函数强化训练(四)|武忠祥老师每日一题 5月22日

解题思路&#xff1a;这道题如果我们会21号的题的话&#xff0c;简直是小菜一碟&#xff01;主要就是要用到下面这个结论&#xff1a; &#xff08;A&#xff09; 直接看奇偶性我们不好看&#xff0c;我们需要拆项&#xff1a; 我们先看前一项的奇偶性&#xff0c;x是奇函数&a…

民国漫画杂志《时代漫画》第13期.PDF

时代漫画13.PDF: https://url03.ctfile.com/f/1779803-1247458360-14efab?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络&#xff01;

P1【知识点】【数据结构】【链表LinkedList】C++版

链表是一种逻辑上连续&#xff0c;内存上分散的线性表数据结构&#xff0c;是用一组任意的空间&#xff08;可以连续&#xff0c;也可以不连续&#xff09;来存放数据元素。每个数据元素成为一个”结点“&#xff0c;每个结点由数据域和指针域组成。 访问元素&#xff08;Acce…

特征融合篇 | YOLOv8改进之引入轻量级跨尺度特征融合模块CCFM | 源自RT-DETR

前言:Hello大家好,我是小哥谈。CCFM(Cross-Scale Feature Fusion Module)即为跨尺度特征融合模块。这个模块的作用是将不同尺度的特征通过融合操作整合起来,以增强模型对于尺度变化的适应性和对小尺度对象的检测能力。CCFM可以有效地整合细节特征和上下文信息,从而提高模…

【全开源】简单商城系统(PC/UniAPP)

轻松构建您的在线商店 在当今数字化时代&#xff0c;拥有一个在线商店对于许多商家来说已成为必不可少的营销手段。为了满足这一需求&#xff0c;我们推出了“简单商城系统源码”&#xff0c;让您轻松构建并管理您的在线商店。 一、简单易用&#xff0c;快速上手 “简单商城…

python demo

文章背景&#xff0c;记录python 小demo 集合 1、使用python matplotlib库描绘曲线 import matplotlib.pyplot as NLAx_index [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100] y_index [6.1, 7.4, 9.1, 11.1, 12.69, 14.35, 16.1, 1…

成都爱尔周进院长提醒当双眼度数差距过大,我们该做些什么

每个人的用眼方式、用眼习惯且两只眼睛“天生条件”不一定相同&#xff0c;当发生近视&#xff0c;双眼近视程度也就可能不同&#xff0c;双眼度数必然会变得不一样。当双眼度数产生差异&#xff0c;尤其是当双眼度数差别过大时会引发哪些问题&#xff1f; 双眼度数不一致&…

面试八股之MySQL篇4——事务篇

&#x1f308;hello&#xff0c;你好鸭&#xff0c;我是Ethan&#xff0c;一名不断学习的码农&#xff0c;很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 &#x1f3c3;人生之义&#xff0c;在于追求&#xff0c;不在成败&#xff0c;勤通…

【ARFoundation自学03】AR Point Cloud 点云(参考点标记)功能详解

和平面识别框架一样 1为XR Origin添加AR Point Cloud Manager组件 然后你的ar应用就具备了点云识别功能&#xff0c;就这么简单 2.可视化这些云点 创建一个美术效果的预制体&#xff0c;人家提供了预设模板 然后拖到仓库&#xff08;ASSETS&#xff09;创建预制体&#xff…

Redis持久化之☞AOF、AOF是怎样执行持久化的?

AOF持久化机制&#xff1a; AOF&#xff08;Append Of File&#xff09;&#xff1a;将redis执行过的所有写指令记录下来&#xff0c;在下次redis重新启动时&#xff0c;只要把这些指令从前到后重复执行一遍&#xff0c;就可以实现数据恢复了。 以独立日志的方式记录每次写命…

本特利330878-90-00前置传感器在PLC系统中的应用与优势

本特利330878-90-00前置传感器在PLC系统中的应用与优势 一、引言 在现代工业自动化领域中&#xff0c;传感器作为信息获取的重要工具&#xff0c;其性能的稳定性和准确性直接影响到整个系统的运行效率。其中&#xff0c;本特利330878-90-00前置传感器以其卓越的性能和广泛的应…

查看主机的php参数short_open_tag 是否为 on

我想要查看主机的php参数short_open_tag 是否为 on&#xff0c;由于我使用的是Hostease的Linux虚拟主机产品&#xff0c;在cPanel面板中并没有找到这个参数选项&#xff0c;因此无法查看。这边联系了Hostease技术支持了解&#xff0c;可以通过以下方式进行查看。 1.先登陆cPane…

自定义横向思维导图,横向组织架构图,横向树图。可以自定义节点颜色,样式,还可以导出为图片

最近公司设计要求根据目录结构&#xff0c;横向展示。所以做了一个横向的思维导图&#xff0c;横向的树结构&#xff0c;横向的组织架构图&#xff0c;可以自定义节点颜色&#xff0c;样式&#xff0c;还可以导出为图片 话不多说&#xff0c;直接上图片&#xff0c;这个就是一…

nssctf(Web刷题)

[SWPUCTF 2021 新生赛]gift_F12 打开题目是一个时间页面&#xff0c;不过看了一会儿发现没有什么用 直接F12打开网页源代码 CtrlF搜索flag 找到了flag NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft} [第五空间 2021]签到题 NSSCTF{welcometo5space} [SWPUCTF 2021 新生赛…

cPanel中如何为数据库添加用户权限

本周有一个客户&#xff0c;购买Hostease的主机&#xff0c;询问我们的在线客服&#xff0c;他的网站安装后再还是无法访问。 客户购买的是Linux虚拟主机&#xff0c;带cPanel面板的。网站访问有如下数据库连接错误: 随后检查发现客户创建的数据库没有添加数据库用户权限。 下面…

期权策略交易怎么做?怎么选择期权策略?

今天期权懂带你了解期权策略交易怎么做&#xff1f;怎么选择期权策略&#xff1f;期权交易是一种金融衍生品交易方式&#xff0c;它给予购买者在未来特定时间内以特定价格购买&#xff08;或出售&#xff09;标的资产的权利。 期权策略交易怎么做&#xff1f; 配对看跌期权&am…

基于地理坐标的高阶几何编辑工具算法(3)——相离面吸附

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理 工具步骤 点击面&#xff0c;点击“相离面吸附”工具&#xff0c;绘制一个面&#xff0c;双击结束后&#xff0c;与所有相交的面进行吸附 应用场景 为了让相离的两个几何面在空间上相邻&#xff0c;使用该工具…