Nginx企业级负载均衡:技术详解系列(10)—— Nginx核心配置详解(HTTP配置块)

在这里插入图片描述

你好,我是赵兴晨,97年文科程序员。

今天咱们聊聊Nginx核心配置中的HTTP配置块,这个配置块在我们的日常使用中极为常见,它的重要性不言而喻。

HTTP配置块在Nginx的配置架构中占据着核心地位,它直接关系到服务器如何处理HTTP请求和响应。通过精心设计HTTP模块,我们可以显著提升Nginx服务器的性能,加速网站的访问速度,从而优化用户体验。
现在,就让我们开始探索HTTP配置块吧!

HTTP协议相关的配置结构

http {
  # 各 server 的公共配置
  ...

  server {
      # 每个 server 用于定义一个虚拟主机,
      # 第一个 server 为默认虚拟服务器
      ...

      # 虚拟主机名
      server_name example.com www.example.com;

      # 主目录
      root /path/to/your/root/directory;

      # 路径别名
      alias /path/to/your/alias/directory;

      location [OPERATOR] URL {
          # 指定 URL 的特性
          ...
      }
  }

  server {
      ...
  }
}

HTTP协议配置说明

1、文件类型与默认MIME类型

  • Nginx使用mime.types文件来识别不同的文件扩展名及其对应的MIME类型。
  • 未在mime.types中定义的文件类型将使用default_type指定的MIME类型。

示例:
如果你的网站提供自定义文件格式,比如.myapp,你可以在mime.types文件中添加 .myapp application/myapp,然后在Nginx中使用 include mime.types; 来启用这些自定义类型。

2、日志记录

  • 日志是服务器运行的重要记录,可以帮助我们监控流量和排查问题。
  • log_format 定义了日志的格式,而 access_log 指定了日志文件的存放路径和使用的格式。

示例:

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

3、文件传输优化

  • sendfile 指令用于优化文件传输,减少CPU利用率。
  • tcp_nopush 和 tcp_nodelay 用于调整 TCP 传输行为,减少网络延迟,提高性能。

示例:
默认情况下,sendfile是关闭的,你可以在HTTP块中添加 sendfile on; 来启用。

4、会话保持时间

  • keeplived_timeout 设置客户端与服务器之间连接的保持时间,允许一定时间内的多个请求复用同一个链接。

示例:
如果你希望减少因 keeplived 连接产生的服务器负载,可以设置较短的超时时间。

keepalive_timeout 5;

5、压缩传输

gzip 压缩可以减少传输的数据量,加快页面加载速度,但可能会增加服务器的CPU负载。

示例:
启动gzip压缩可以减少传输的数据量,配置如下

gzip on;
gzip_types text/plain text/css text/xml application/json;

6、监听与服务器名称

listen 指令让服务器监听指定的端口,而server_name定义了服务器的名称,可以用与虚拟主机的配置。

示例:
为特定域名配置服务器并指定默认服务器

server {
    listen 80;
    server_name mywebsite.com *.mywebsite.com;
    default_server;
    ...
}

7、网站根目录与默认首页

root 指定了网站内容的根目录,而index定义了默认首页文件,当请求网站根目录时提供。

示例:
设置网站根目录和默认首页

location / {
    root /var/www/mywebsite;
    index index.php index.html index.htm;
}

8、错误页面定义

error_page允许我们为特定的HTTP状态码定义自定义的错误页面,提升用户体验。

示例:
自定义404 和 500 错误页面

error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
}

9、安全性配置

使用正则表达式匹配 .ht 和 passwd.html 等敏感文件,并拒绝访问,增强了服务器的安全性。

示例:

location ~ /\.ht {
    deny all;
}
location ~ /passwd.html {
    deny all;
}

10、HTTPS服务器配置

配置HTTPS可以参考我的另一篇文章《Nginx HTTPS配置:一篇文章解决所有痛点》

示例:
配置HTTPS服务器,启用SSL加密

server {
    listen 443 ssl;
    server_name mywebsite.com;
    ssl_certificate /etc/ssl/certs/mywebsite.com.crt;
    ssl_certificate_key /etc/ssl/private/mywebsite.com.key;
    ...
}

OK,今天的分享到这里就结束啦,我们从文件类型到性能优化,每一项配置都是为了提升网站的响应速度和安全性。希望这些只是能够帮助您更好地利用Nginx的强大功能。

请继续关注,明天我将分享更具体的Nginx核心配置示例,让你对Nginx的配置更加通透。感谢阅读,咱们明天见!


最后,我为您准备了一份特别的技术学习礼物,包括:
Linux学习笔记:详尽记录了Linux的核心知识点和实用技巧。
Java基础笔记:为您打下坚实的Java编程基础。
Java面试总结:十万字的面试经验,助您轻松应对各种技术面试。

【一键领取】
领取这份资料包,您只需轻松一扫:
按住👇🏻图片,扫描二维码,备注:【大礼包】‍
通过好友验证后,您的的专属资料包就会立即发送给您。

Linux系统学习笔记、Java基础学习笔记、10万字Java面试总结
在这里插入图片描述

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

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

相关文章

panic: concurrent write to websocket connection【golang、websocket】

文章目录 异常信息原由代码错误点 解决办法 异常信息 panic: concurrent write to websocket connection原由 golang 编写 websocket go版本:1.19 使用了第三方框架: https://github.com/gorilla/websocket/tree/main 代码 server.go // Copyright …

蓝桥楼赛第30期-Python-第三天赛题 从参数中提取信息题解

楼赛 第30期 Python 模块大比拼 提取用户输入信息 介绍 正则表达式(英文为 Regular Expression,常简写为regex、regexp 或 RE),也叫规则表达式、正规表达式,是计算机科学的一个概念。 所谓“正则”,可以…

nssctf——web

[SWPUCTF 2021 新生赛]gift_F12 1.打开环境后,这里说要900多天会有flag,这是不可能的 2.f12查看源码,然后在html中查找flag (在最上方的栏目中,或者按ctrlf) [SWPUCTF 2021 新生赛]jicao 1.打开环境是一段…

数据结构(树)

1.树的概念和结构 树,顾名思义,它看起来像一棵树,是由n个结点组成的非线性的数据结构。 下面就是一颗树: 树的一些基本概念: 结点的度:一个结点含有的子树的个数称为该结点的度; 如上图&#…

Qt | QCalendarWidget 类(日历)

01、QCalendarWidget 类 1、QCalendarWidget 类是 QWidget 的直接子类,该类用于日历,见下图 02、QCalendarWidget 属性 ①、dateEditAcceptDelay:int 访问函数:int dateEditAcceptDelay()const; void setDateEditAcceptDelay(int) 获取和设置日期编辑器的延迟时间(以毫秒…

go routing 之 gorilla/mux

1. 背景 继续学习 go 2. 关于 routing 的学习 上一篇 go 用的库是:net/http ,这次我们使用官方的库 github.com/gorilla/mux 来实现 routing。 3. demo示例 package mainimport ("fmt""net/http""github.com/gorilla/mux&…

设计模式11——代理模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 代理模式(Proxy&am…

ATA-7020高压放大器原理介绍

高压放大器是一种电子设备,用于增加输入信号的幅度,使其输出具有更大的电压。它在各种领域中发挥着关键作用,尤其是在需要高电压信号的应用中,如声学、医学成像、科学研究等领域。 高压放大器工作原理介绍: 信号输入&a…

图像上下文学习|多模态基础模型中的多镜头情境学习

【原文】众所周知,大型语言模型在小样本上下文学习(ICL)方面非常有效。多模态基础模型的最新进展实现了前所未有的长上下文窗口,为探索其执行 ICL 的能力提供了机会,并提供了更多演示示例。在这项工作中,我…

go mod模式下,import gitlab中的项目

背景 为了go项目能够尽可能复用代码,把一些公用的工具类,公用的方法等放到共用包里统一管理。把共用包放到gitlab的私有仓库中。 遇到的问题 通过https方式,执行go get报了错误。 通过ssh方式,执行go get报了错误。 修改配置&am…

Android:使用Kotlin搭建MVC架构模式

一、简介Android MVC架构模式 M 层 model ,负责处理数据,例如网络请求、数据变化 V 层 对应的是布局 C 层 Controller, 对应的是Activity,处理业务逻辑,包含V层的事情,还会做其他的事情,导致 ac…

WebRTC-SFU服务器-Janus部署【保姆级部署教程】

一、SFU WebRTC SFU(Selective Forwarding Unit)构架是一种通过服务器来路由和转发WebRTC客户端音视频数据流的方法。这种构架的核心特点是将服务器模拟成一个WebRTC的Peer客户端,从而实现了音视频流的直接转发。 在SFU构架中,服务器作为中心节点,但并不负责音视频流的混…

TG5032CGN TCXO 超高稳定10pin端子型适用于汽车动力转向控制器

TG5032CGN TCXO / VC-TCXO是一款应用广泛的晶振,具有超高稳定性,CMOS输出和使用晶体基振的削波正弦波输出形式。且有低相位噪声优势,是温补晶体振荡器(TCXO)和压控晶体振荡器(VCXO)结合的产物,具有TCXO和VCXO的共同优点&#xff0…

海山数据库(He3DB)代理ProxySQL使用详解:(一)架构说明与安装

一、ProxySQL介绍 1.1 简介 业界比较知名的MySQL代理,由ProxySQL LLC公司开发并提供专业的服务支持,基于GPLv3开源协议进行发布,大部分配置项可动态变更。后端的MySQL实例可根据用途配置到不同的hostgroup中,由ProxySQL基于7层网络协议,将来…

Python 实现Word (DOC或DOCX)与TXT文本格式互转

目录 引言 安装Python库 使用Python将Word转换为TXT文本格式 使用Python将TXT文本格式转换为Word 引言 Word文档和TXT文本文件是日常工作和生活中两种常见的文件格式,各有其特点和优势。Word文档能够保留丰富的格式设置,如字体、段落、表格、图片等…

格雷母线与卸料小车的非接触式定位技术

在现代化的工业生产中,自动化与智能化已成为提高生产效率、降低成本的关键手段。特别是在钢铁、矿山等重工业领域,卸料小车作为物料搬运的重要设备,其定位精度和工作效率直接影响了整个生产线的运行状况。格雷母线高精度位移测量系统的引入&a…

worklist配置调试日志记录

工作记录用,不拘小节! 设备请求日志 2024-05-23 09:03:14,503 [WorkListServer: 10.87.232.253 [18]] INFO - LISTMWL Request from [gehc]: (0008,0005) CS [ISO_IR 100] # 10 Specific Character Set 1-N (0008,0020) DA [] …

C++ | Leetcode C++题解之第108题将有序数组转换为二叉搜索树

题目&#xff1a; 题解&#xff1a; class Solution { public:TreeNode* sortedArrayToBST(vector<int>& nums) {return helper(nums, 0, nums.size() - 1);}TreeNode* helper(vector<int>& nums, int left, int right) {if (left > right) {return nu…

12V-24V转8.4V5A同步降压恒压WT6020

12V-24V转8.4V5A同步降压恒压WT6020 WT6020是一款高效率的DC/DC转换器&#xff0c;采用抖动频率和平均电流模式架构&#xff0c;是单片同步降压设计。具有优秀的线路和负载调节能力&#xff0c;最大输出电流可达10A。 工作电压范围为7V至30V&#xff0c;可调输出电压为1V至20…

php之web开发

目标 实现一款具有常用大部分功能的WEB应用&#xff0c;并初步了解WEB漏洞原理 登录功能&#xff1a; 1、基于前端的登录功能 <!DOCTYPE html> <html> <head> <title>简单登录功能</title> </head> <meta charset"UTF-8"…