企业高性能WEB服务器—Nginx

news2025/5/10 16:11:12

Nginx介绍

Nginx是一款轻量级的网页服务器、反向代理服务器以及电子邮件代理服务器。

具有高并发(特别是静态资源)、占用系统资源少的特性。它不仅是Web服务软件,还具有反向代理负载均衡功能和缓存服务功能

具备如下基本特性

可针对静态资源高速高并发访问及缓存。

可使用反向代理加速,并且可进行数据缓存。

具有简单负载均衡、节点健康检查和容错功能。

为什么 Nginx 总体性能比 Apache 高 ?

Nginx 使用最新的 epoll ( Linux 2.6 内核)和 kqueue ( freebsd ) 异步网络 I/O 模型,而 Apache 使用 的是传统的 select 模型。目前 Linux 下能够承受高并发访问的 Squid 、Memcached 软件采用的都是 epoll 模型。 处理大量连接的读写时,Apache 所采用的 select 网络 I/O 模型比较低效。

Nginx的安装

RPM包获取:Index of /packages/

源码包获取:Index of /download/

配置文件/etc/nginx/nginx.conf

主目录/usr/share/nginx/html

查看版本 /usr/sbin/nginx -t

配置文件语法检查/usr/sbin/nginx -t

服务启动停止 /etc/init.d/nginx {start | stop | restart | reload | status}

Nginx 软件功能模块说明

( 1 ) Nginx 核心功能模块

Nginx 核心功能模块负责 Nginx 的全局应用,主要对应主配置文件的 Main 区块和Events 区块区域,这 里有很多 Nginx 必须的全局

参数配置。

( 2 ) 标准的 http 功能模块集合

[root@www ~ ] # tree /application/nginx/

# <== 如果 tree 命令找不到需要 yum intall tree -y 安装

配置文件说明

[root@web01 conf]# cat nginx.conf
worker_processes 1;               ← worker 进程数量
events {                           ←事件区块
    worker_connections 1024;      ←每个worker进程可以处理的连接数
}                                  ←事件区块结束
http {                                      ← HTTP 区块
    include       mime.types;               ←支持的媒体文件
    default_type application/octet-stream; ←默认的媒体类型
    sendfile       on;                     ←高效传输模式
    keepalive_timeout 65;                  ←超时时间
    server {                                ← server 区块
        listen       80;                    ←端口
        server_name localhost;             ←域名
        location / {                        ←第一个location区块
            root   html;                     ←站点目录
            index  index.html index.htm;     ←首页文件
       }                                    ←第一个location区块结束
        error_page   500 502 503 504 /50x.html;  ← 错误信息配置
        location = /50x.html {                  文件位置
            root   html;                        在哪找:路径
       }                                     
   }                                        ← server 区块结束
}                                            ← HTTP 区块结束

Nginx-web 应用

1.静态页面

[root@openEuler1 html]# cd /usr/share/nginx/html/

[root@openEuler1 html]# echo "test page." >/usr/share/nginx/html/index.html

2.虚拟主机配置

基于域名的虚拟主机--基本对外提供服务的网站使用的都是基于域名的虚拟主机

基于端口的虚拟主机--通过不同的端口来区分不同的虚拟主机,此类虚拟主机对 应的企业应用主要为公司内部网

基于IP的虚拟主机----通过不同的IP区分不同的虚拟主机

-----基于域名虚拟主机示例 1)配置文件添加虚拟主机部分

server {
        listen       80;
        server_name bbs.test.com;
        location / {
            root   html/bbs;
            index  index.html index.htm;
       }
   }
    server {
        listen       80;
        server_name blog.test.com;
        location / {
            root   html/blog;
            index  index.html index.htm;
       }
   }

创建站点目录

mkdir /usr/share/nginx/html/blog

mkdir /usr/share/nginx/html/bbs

创建主页文件

echo " blog test" > /usr/share/nginx/html/blog/index.html

echo " bbs test" > /usr/share/nginx/html/bbs/index.html

测试

echo "192.168.190.164 blog.test.com bbs.test.com" >> /etc/hosts

[root@localhost]# curl http://blog.test.com

[root@localhost]# curl http://bbs.test.com日志配置

错误日志:记录nginx运行错误情况信息

访问日志:记录用户访问日志情况

1>配置错误日志。

系统默认配置

error_log   /var/log/nginx/error.log

2>配置访问日志。 系统默认配置

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
access_log  /var/log/nginx/access.log  main;

访问日志说明:

[root@openEuler1 nginx]# tail -1 access.log
192.168.190.164 - - [13/Mar/2025:23:05:45 +0800] "GET / HTTP/1.1" 200 10 "-" "curl/7.79.1" "-"
$remote_addr:客户端地址
$remote_user:远程访问用户
[$time_local]:访问时间
$request:请求行信息
$status:状态码
$body_bytes_sent:响应报文主体内容大小
$http_user_agent:客户端浏览页面信息工具
$http_x_forwarded_for:反向代理转发
​

location指令

location 指令的作用是根据用户请求的URI来执行不同的应用。

location使用的语法为

location [=|~|~*|^~] uri {
 ....
}

~ 匹配内容区分大小写

~* 匹配内容不区分的小写

!~ 取反

^~ 但多个匹配同时存在,优先匹配 ^~匹配的内容;不做正则表达式的检查 (优先处理)

测试location 的访问

 #location / {
 root   html;
        #   autoindex on;
        #   index index.html index.htm;
        #}
        
        location / {
                return 401;
       }
        location = / {
                return 402;
       }
        location /documents/ {
                return 403;
       }
        location ^~ /images/ {
                return 404;
       }
        location ~* \.(gif|jpg|jpeg)$ {
                return 500;
       }

测试location 的访问 访问测试:

[root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 
192.168.150.12/docuements
401
[root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 192.168.150.12
402
[root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 
http://192.168.150.12/documents/
403
[root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 
192.168.150.12/images/a.jpg
404
[root@www conf]# curl -I -w "%{http_code}\n" -o /dev/null -s 
192.168.150.12/docuements/abc.jpg
500
​

基于地址访问控制

实例:限制主机192.168.190.1 访问www.b.com

借助于之前虚拟主机环境:

1) 修改配置文件

server {
    listen   192.168.190.146:80;
    server_name www.b.com;
    access_log /data/web2/access.log combined;
    
    location / {
      autoindex on;
      root /data/web2;
      index  index.html index.htm;
      deny 192.168.190.1;
      allow 192.168.190.0/24;
      deny all;
   }

#提示:从上到下的顺序,类似iptables。匹配到了便跳出。

2) 重启nginx

3) 客户端测试

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

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

相关文章

Python MNE-Python 脑功能磁共振数据分析

一、什​​么​​是​​Python MNE-Python 脑​​功​​能​​磁​​共​​振​​数​​据​​分​​析 为大脑功能磁共振成像数据分析工具&#xff0c;致力于为神经科学研究提供便捷、高效的数据分析处理工具。MNE-Python提供了处理和分析脑电图&#xff08;EEG&#xff09;、…

DevExpressWinForms-AlertControl-使用教程

文章目录 AlertControl-使用教程一、将 AlertControl 添加到 Form二、编辑 AlertControl 的 HtmlTemplateHTML Template Editor介绍编辑HTML Template 三、使用AlertControl弹出AlertAlert中的按钮事件获取 Alert 标题等信息向Alert传递参数 总结源码 AlertControl-使用教程 一…

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.4 可视化报告输出

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 电商数据分析实战&#xff1a;基于PostgreSQL的可视化报告生成全流程9.4 可视化报告输出9.4.1 可视化报告设计框架9.4.1.1 报告目标与受众9.4.1.2 数据准备与指标体系 9.4.2…

屎上雕花系列-2nd

以下为“屎上雕花”的尝试2nd 使用Deepseek扩容而来&#xff0c;我竟然没有找到明显的错误&#xff0c;太强大了&#xff0c;工作改变生活了 LeCroy 以太网与 SAN 网络测试解决方案 硬件平台一&#xff1a;Xena 以太网流量生成器 Xena 以太网流量生成器是一款高性能的网络测…

MCP专题| 突破LLM三大瓶颈!模型上下文协议(MCP)如何重塑AI交互体验?

最近引爆了整个AI圈的Model Context Protocol&#xff08;MCP&#xff09;到底是什么&#xff1f;你是否也和小编一样一头雾水&#xff0c;不是说好的LLM风潮呢&#xff0c;怎么现在变成通信协议啦&#xff1f;最近小编也是找到一篇神仙综述&#xff0c;带你一遍搞清什么是MCP的…

我的AD快捷键方案【留存】

留存我的快捷键方案文件&#xff0c;以便换电脑的时候能够快速导入快捷键。 我的快捷键文件&#xff1a; 通过网盘分享的文件&#xff1a;JB20250509.DXPPrf 链接: https://pan.baidu.com/s/1t6V0GjdGFPNSFydP5Z_tfg?pwde4xs 提取码: e4xs 复制这段内容后打开百度网盘手机Ap…

Edwards爱德华STP泵软件用于操作和监控涡轮分子泵

Edwards爱德华STP泵软件用于操作和监控涡轮分子泵

QT6(35)4.8定时器QTimer 与QElapsedTimer:理论,例题的界面搭建,与功能的代码实现。

&#xff08;112&#xff09; &#xff08;113&#xff09;模仿随书老师给的源代码搭建的&#xff0c; LCD 显示的部分不一样 &#xff1a; &#xff08;114&#xff09;以下开始代码完善&#xff1a; 关联定时器的信号与槽函数 &#xff1a; &#xff08;115&#xff09;…

02 mysql 管理(Windows版)

一、启动及关闭 MySQL 服务器 1.1 通过 “服务” 管理工具 winr打开运行&#xff0c;输入services.msc 找到MySQL80&#xff0c;这个是我们在安装mysql的时候给的服务的名称&#xff0c;具体见文章mysql 安装 右键选择启动或者停止。 1.2 通过命令提示符 1.2.1 关闭命令…

不同渲染任务,用CPU还是GPU?

一、CPU与GPU渲染的核心差异与选型建议 CPU渲染的核心优势与适用场景 复杂场景处理能力&#xff1a;CPU凭借强大的多核性能&#xff08;如AMD Threadripper 3990x的64核&#xff09;和高内存容量&#xff08;最高支持512GB&#xff09;&#xff0c;擅长处理影视级光线追踪、全…

硅基计划 学习总结 拾贰

一、二级指针 难道指针也有分等级的吗&#xff0c;我们学过的指针要存放变量的地址的&#xff0c;那二级指针是干嘛的呢&#xff1f; 一级指针&#xff1a;int a 10; int *pa &a; 指针变量&#xff0c;它终究是个变量&#xff0c;也有自己的地址 那我们以后是不是可以通…

【C语言指针超详解(三)】--数组名的理解,一维数组传参的本质,冒泡排序,二级指针,指针数组

目录 一.数组名的理解 二.使用指针访问数组 三.一维数组传参的本质 四.冒泡排序 五.二级指针 六.指针数组 6.1--指针数组的定义 6.2--指针数组模拟二维数组 &#x1f525;个人主页&#xff1a;草莓熊Lotso的个人主页 &#x1f3ac;作者简介&#xff1a;C方向学习者 &…

QT聊天项目DAY10

1.封装redis操作类 头文件 #ifndef REDISMANAGE_H #define REDISMANAGE_H#include "Singletion.h" #include "GlobalHead.h"class RedisManage : public Singletion<RedisManage> {friend class Singletion<RedisManage>; public:~RedisMana…

养生:开启健康生活的钥匙

养生&#xff0c;是对生活的精心呵护&#xff0c;是通往健康之路的秘诀。以下从饮食、运动、睡眠和心态四个方面&#xff0c;为你呈现科学养生之道。 饮食养生&#xff1a;营养均衡的智慧 合理的饮食是养生的基础。遵循 “食物多样&#xff0c;谷类为主” 的原则&#xff0c;…

基于springboot的海洋环保知识分享系统的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…

操作系统 第2章节 进程,线程和作业

一:多道程序设计 1-多道程设计的目的 for:提高吞吐量(作业道数/处理时间),我们可以从提高资源的利用率出发 2-单道程序设计缺点: 设备的利用率低,内存的利用率低,处理机的利用率低 比如CPU去访问内存,CPU空转.内存等待CPU访问也是没有任何操作的.要是有多个东西要去访问不冲…

RT-Thread 深入系列 Part 2:RT-Thread 内核核心机制深度剖析

摘要&#xff1a; 本文从线程管理、调度器原理、中断处理与上下文切换、IPC 同步机制、内存管理五大核心模块出发&#xff0c;深入剖析 RT-Thread 内核实现细节&#xff0c;并辅以源码解读、流程图、时序图与性能数据。 目录 线程管理与调度器原理 1.1 线程控制块&#xff08;T…

在线caj转换word

CAJ格式是中国知网特有的一种文献格式&#xff0c;在学术研究等领域广泛使用&#xff0c;但有时我们需要将其转换为Word格式&#xff0c;方便编辑、引用文献。本文分享如何轻松将CAJ转换为word的转换工具&#xff0c;提高阅读和办公效率。 如何将CAJ转换WORD? 1、使用CAJ转换…

25:三大分类器原理

1.分类的逻辑&#xff1b; 2.统计学与数据分析。 ************************ Mlp 多层感知系统 GMM 高斯混合模型-极大似然估计法 SVM 支持向量机建立一个超平面作为决策曲面&#xff0c;使得正例和反例的隔离边界最大化 Knn 1.MLP整个模型就是这样子的&#xff0c;上面…

【从零开始学习微服务 | 第一篇】单体项目到微服务拆分实践

目录 引言 一、选择聚合结构进行拆分的优势 二、微服务模块创建步骤 &#xff08;一&#xff09;引入 pom 文件与修改 &#xff08;二&#xff09;创建 Spring Boot 启动类 &#xff08;三&#xff09;搭建基本包结构 三、配置文件的引入与调整 四、业务代码的引入与注意…