瞅一眼nginx

news2024/12/25 10:25:01

目录

🦬什么是nginx?

🦬nginx配置官方yum源:

🦬nginx优点

🦬nginx 缺点

🦬查看nginx默认模块

🐌nginx新版本的配置文件:

🐌nginx目录索引

🐌nginx状态监控(status模块)

🐌nginx基于用户的访问控制(auth模块)

🐌nginx的访问限制***

🐌nginx日志格式:log_format

🐌nginx的location ***** 


什么是nginx?

世界最大web服务器软件,以高并发、低消耗著称,源自于俄罗斯,创建者 Igor(伊戈尔),2004年开源,最早以代理服务器的身份出现,2015成立nginx公司,2019年以6.7亿被F5 Networks公司收购。

 

nginx配置官方yum源:

http://nginx.org/en/linux_packages.html#RHEL-CentOS
vim /etc/yum.repos.d/nginx.repo
添加:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
保存退出

nginx优点

高性能:Nginx采用了异步非阻塞的事件驱动模型,能够处理大量并发连接,较低的资源消耗,具有出色的性能表现

高度可靠:它具备优秀的故障恢复能力,能够在面对高峰时段或者异常访问情况下保持稳定。

可扩展性强:反向代理服务器,将请求分发到多个后端服务器,实现负载均衡和高可用性。它还支持动态模块加载,可以通过插件来扩展功能,非常灵活。

内存占用低:相对于传统的Web服务器,Nginx占用的内存更少,可以更好地利用服务器的资源。

nginx 缺点

尽管Nginx拥有许多优点,但它也有一些缺点需要了解比如:在Windows环境下的支持较弱,限制性的脚本语言支持,缺少内置支持,适应范围较小,动态内容处理相对复杂,等一些因素

查看nginx默认模块

nginx -V
 

nginx新版本的配置文件:

全局配置文件:/etc/nginx/nginx.conf
    虚拟主机配置:/etc/nginx/conf.d/*.conf
    例子1:使用域名搭建一台虚拟主机
            mkdir  /www
            复制网页代码到/www目录下
            vim /etc/nginx/conf.d/www.conf
            添加:
            server {
                listen       80;
                server_name  www.yundong.com;
                location / {
                    root   /www;
                    index  index.html index.htm;
                }
    
            }
            保存退出
            systemctl restart nginx 
            客户端修改/etc/hosts访问测试

nginx目录索引

nginx默认不起用目录索引,更不允许列出网站目录提供下载。
    Syntax:    autoindex on | off;                索引功能的开或关
    Default:    autoindex off;                默认关闭
    Context:    http, server, location        场景:全局、某个虚拟主机、某个虚拟主机的目录
    
    例子:在www网站下,创建download下载目录,索引显示
    mkdir /www/download
    复制文件到/www/download目录下
    vim  /etc/nginx/conf.d/www.conf
    在server字段中添加:
    location /download {
        root   /www;
        autoindex on;                        启用索引显示
        charset utf-8,gbk;                    字符编码为中文
        autoindex_exact_size on;            显示文件大小        
        autoindex_localtime on;                显示文件创建时间
    }
    保存退出
    systemctl reload nginx
    客户端测试访问:http://www.www.com/download

nginx状态监控(status模块)

Syntax:    stub_status;                    启用状态化追踪
    Default:    —                            默认关闭
    Context:    server, location            场景:

    例子:针对www网站,启用状态化追踪
    vim  /etc/nginx/conf.d/www.conf
    在server字段中添加:
    location /status {
        stub_status;                        启用状态化追踪
        access_log off;                        关闭status的日志记录
    }
    保存退出
    systemctl reload nginx
    客户端访问:http://www.www.com/status
    客户端显示结果如下:  ***
    Active connections: 1                     当前活跃的连接数
    server  accepts     19                 当前的总tcp连接数
        handled     19                 成功的连接数
        requests    486                总HTTP请求数
  

nginx基于用户的访问控制(auth模块)

环境知识:
    网站用户认证方式:摘要式  基本式身份验证
    
    例子:设置访问/status,用户密码验证
    yum -y install httpd-tools
    htpasswd -b -c /etc/nginx/.auth_conf webadmin 123456
    vim  /etc/nginx/conf.d/www.conf
    修改为:
         location /status {
            stub_status;
            access_log off;
            auth_basic           "input your passwd:";    用户验证启用描述
            auth_basic_user_file /etc/nginx/.auth_conf;    用户验证文件路径
        }

nginx的访问限制***

    limit_conn_module        连接频率限制
    例子:
    http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;   创建zone区域名为addr,大小10m,保存客户端的二进制ip
        server {
            location /download/ {
                    limit_conn addr 1;                    一个ip同一时间点只允许建立一个连接
                    }
            }
    }
    
    limit_req_module        请求频率限制
    例子:
    vim /etc/nginx/nginx.conf
    http {
    第23行插入:
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;    创建zone区域名为one,大小10m,保存客户端的二进制ip,限制请求速率每秒1次
    保存退出 
    
    vim /etc/nginx/conf.d/www.conf 
    server {
            location /download {
                limit_req zone=one burst=5;                        调用请求速率区域,另外设置额外突发5次
                }
            }
    }

nginx日志格式:log_format

例子:
    vim /etc/nginx/nginx.conf
    http {
        log_format  main  '$remote_addr - $remote_user [$time_iso8601] "$request" '        #定义日志输出格式main
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;                                    #调用日志格式main
    }
    #nginx日志格式的变量:
    $remote_addr            #记录客户端的ip地址
    $remote_user            #记录客户端的用户名
    $time_local                #通用的时间格式
    $time_iso8601            #iso8601时间格式
    $request                #请求的方法和请求的HTTP协议
    $status                    #请求状态码
    $body_bytes_sent        #服务器回应的字节数,不包含头部大小
    $bytes_sent                #服务器回应的总字节数
    $msec                    #日志写入时间,单位为秒,精度为毫秒
    $http_referer            #记录链接访问源地址
    $http_user_agent        #记录客户端浏览器信息
    $http_x_forwarded_for    #代理服务器ip
    $request_length            #请求包的长度(请求头+请求正文)
    $request_time            #请求花费的时间,单位为秒,精度为毫秒 ***

nginx的location ***** 

语法详解
语法规则: location [=|~|~*|^~] /uri/ { … }
下列以优先级从高到低排序

= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。

~ 开头表示区分大小写的正则匹配                    

~* 开头表示不区分大小写的正则匹配             

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则

/ 通用匹配,任何请求都会匹配到。

例子:测试匹配符的优先级
cd /etc/nginx/conf.d/
vim test.conf
添加:
server {
        listen 80;
        server_name test.benet.com;

        location / {
                default_type text/html;
                return 200 "location /";
        }
        location =/ {
                default_type text/html;
                return 200 "location =/";
        }
        location ~ / {
                default_type text/html;
                return 200 "location ~ /";
        }
        location ~* / {
                default_type text/html;
                return 200 "location ~* /";
        }
}
保存退出
客户端修改hosts文件,测试访问

真实企业场景配置:***
#通用匹配,任何请求都会匹配到。
location / {
    root /www;
}

#严格区分大小写,匹配.php结尾
location ~ \.php$ {
    fastcgi_pass http://127.0.0.1:9000;
}

#严格区分大小写,匹配.jsp结尾
location ~ \.jsp$ {
    proxy_pass http://127.0.0.1:8080;
}

#不区分大小写匹配
location ~* "\.(sql|bak|tgz|tar.gz|.git)$ {
    default_type text/html;
    return 403 "启用访问控制";
}    

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

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

相关文章

Attacks in NLP

一、 Introduction NLP对抗攻击是人工智能对抗攻击的一个重要的组成部分,但是最近几年才逐渐开始兴起,究其原因在于NLP对抗攻击与传统computer vision或者audio对抗攻击有很大的不同,主要在于值空间的连续性(CV、audio&#xff0…

基于Selenium技术方案的爬虫入门实践

通过爬虫技术抓取网页,动态加载的数据或包含 JavaScript 的页面,需要使用一些特殊的技术和工具。以下是一些常用的技术方法: 使用浏览器模拟器:使用像 Selenium、PhantomJS 或其他类似工具可以模拟一个完整的浏览器环境&#xff0…

Mysql的instr()函数用法详解

最近接手了一个大型老项目,用到的jfinal技术,后端大部分都是拼写的sql,对一些sql函数不太理解的我算是一个挑战,也是一个进步的很大空间。 今天来说下instr这个函数 首先看下我们的表数据 我们先执行: SELECT * fro…

Axwing.878 线性同余方程

题目 给定n组数据ai, bi , mi,对于每组数求出一个xi,使其满足ai * xibi (mod mi),如果无解则输出impossible。 输入格式 第一行包含整数n。 接下来n行,每行包含一组数据ai , bi , mi。 输出格式 输出共n行,每组数…

【C++】常用到的“using namespace std;”到底是什么?

一、引言 在初学C时&#xff0c;在包含完头文件之后&#xff0c;我们常常会看到这么一句话&#xff1a;using namespace std; 比如&#xff1a; #include<iostream> using namespace std; int main() {cout << "hello world" << endl;return 0…

Java实现neo4j数据库连接及增删改查

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

LeetCode96. 不同的二叉搜索树

96. 不同的二叉搜索树 文章目录 [96. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/)一、题目二、题解 一、题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的…

《剑指offer》(5)搜索算法、位运算、模拟

方法一&#xff1a; class Solution: def GetNumberOfK(self , nums: List[int], k: int) -> int: #从两边开始找&#xff0c;找到之后记录当前位置 left 0 right len(nums) - 1 if k not in nums: return 0 start len(nums) - 1 end 0 while left < right: if nums…

C++ 多态深入解析

文章目录 前言一、什么是多态二、如何实现多态三、代码讲解四、静态联编&#xff0c;动态联编总结 前言 在C编程中&#xff0c;多态性&#xff08;Polymorphism&#xff09;是一种重要的概念&#xff0c;它允许基于对象的实际类型来调用不同的函数。多态性提供了灵活性和可扩展…

高绩效项目管理助力企业数字化变革︱海克斯康数字智能大中华区PMO经理周游

海克斯康数字智能大中华区PMO经理周游先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;高绩效项目管理助力企业数字化变革。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 在当今项目驱动的…

vue2 封装 webSocket 开箱即用

第一步&#xff1a; 下载 webSocket npm install vue-native-websocket --save 第二步&#xff1a; 需要在 main.js 中 引入 import websocket from vue-native-websocket; Vue.use(websocket, , {connectManually: true, // 手动连接format: json, // json格式reconnection:…

口-肠-脑轴与精神健康的关系

谷禾健康 在个体中&#xff0c;每个微生物栖息地都表现出独特的微生物种群模式。迄今为止&#xff0c;关于微生物组相关疾病的研究主要集中在器官特异性微生物组上。然而&#xff0c;器官间的微生物网络正逐渐成为生理功能和病理过程中的重要调节因子和治疗机会。 在正常情况下…

c语言——三子棋

基本框架 三个文件: 其中.cpp文件用于游戏具体函数设计&#xff0c;.h文件为游戏的函数声明&#xff0c;test.cpp文件用于测试游戏运行。 需要用到的头文件&#xff1a; #include <stdio.h> #include <stdlib.h>//rand&srand #include <time.h>//时间相…

Linux命令200例:cd用于改变当前工作目录(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

Linux中singal信号的作用

void&#xff08;* signal&#xff08;int sig&#xff0c;void&#xff08;* func&#xff09;&#xff08;int&#xff09;&#xff09;&#xff09;&#xff08;int&#xff09;;设置处理信号的功能 头文件为&#xff1a;#include <signal.h> 指定使用sig指定的信号…

FreeRTOS通过消息队列实现串口命令解析(串口中断)

作者&#xff1a;Jack_G 时间&#xff1a;2023.08.08 版本&#xff1a;V1.0 上次修改时间&#xff1a; 环境&#xff1a; \quad \quad \quad \quad STM32Cube MX V6.8.1 \quad \quad \quad \quad STM32CubeH7 Firmware Package V1.11.0 / 04-Nov-2022 \quad \quad \quad \qu…

【Linux】—— 进程等待 waitwaitpid

序言&#xff1a; 之前讲过&#xff0c;子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成‘僵尸进程’的问题&#xff0c;进而造成内存泄漏。因此&#xff0c;为了解决这个问题&#xff0c;就需要用到有关 “进程等待” 的基本知识&#xff01;&#xff01;&am…

form-create-designer整合element-plus使用方法

最近在使用form-create-designer生成表单的时候遇到了很多问题和各种报错&#xff0c;按照官方文档的方法一步步来做&#xff0c;发现行不通&#xff0c;后来经过不断尝试&#xff0c;终于找到了使用方法&#xff0c;这里做一下总结。 1、安装所需的依赖包 npm install eleme…

PE半透明屏,在建筑行业中,有哪些应用展示?

PE半透明屏是一种新型的屏幕材料&#xff0c;具有半透明的特点。 它由聚乙烯&#xff08;PE&#xff09;材料制成&#xff0c;具有良好的透明度和柔韧性。 PE半透明屏广泛应用于建筑、广告、展览等领域&#xff0c;具有很高的市场潜力。 PE半透明屏的特点之一是其半透明性。…

【数据结构】双链表

【数据结构】双链表 一. 前言二. 带头双向链表接口实现1.准备工作2. 创建一个节点 三. 初始化4. 打印5. 尾插6. 尾删7. 头插8. 头删9. 计算节点个数10. 查找数据11. 在任意位置插入数据12. 在任意位置删除数据13. 销毁 四. 如何10分钟内完成一个完整双链表 一. 前言 带头双向循…