nginx原理和配置项详解

news2025/1/18 20:26:44

一、nginx原理

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。其工作原理和配置项如下:

工作原理:

  1. 反向代理:Nginx可以作为反向代理服务器,接收客户端的请求,然后将请求转发给后端的服务器。Nginx可以根据不同的正则匹配采取不同的转发策略,如图片文件结尾的走文件服务器,动态页面走web服务器。同时,Nginx可以对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,Nginx可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
  2. 负载均衡:Nginx提供了负载均衡策略,包括内置策略和扩展策略。负载均衡能够将服务的请求分发给负责相应服务的服务器,当请求同一个服务的请求过多时,服务器可以承受,从而提高服务器的处理能力。

配置项详解:

  1. worker_processes:Nginx的工作进程数。建议设置为CPU核数。
  2. events { worker_connections }:每个worker进程的最大连接数。这个数字应大于1024。
  3. http { }:主要配置HTTP服务器的区域。
  4. server { }:定义一个虚拟服务器。
  5. location { }:定义URL匹配的规则和处理方式。常见的处理方式有proxy_pass(代理到后端服务器)、index(指定默认的index文件)、try_files(尝试按顺序查找文件或目录)。
  6. error_page:定义错误页面。例如,error_page 404 /404.html;会将404错误指向一个自定义的404.html页面。
  7. proxy_pass:指定后端代理服务器地址。例如,proxy_pass http://127.0.0.1:8080;会将所有请求转发到本地的8080端口。
  8. sendfiletcp_nopushtcp_nodelay:与socket的send操作有关的指令。
  9. keepalive_timeout:长连接的超时时间。
  10. fastcgi_pass:指定FastCGI服务器的地址。
  11. include /etc/nginx/conf.d/*.conf:包含其他配置文件。

二、nginx配置详解

这一部分可以作为公共配置,包含的   
  include /etc/nginx/conf.d/*.conf;

可以作为子配置文件引入

#配置用户或者组,默认为nobody
user  nginx;

#允许生成的进程数,默认为1,一般配置为cpu核数
worker_processes  auto;
#错误日志
error_log  /var/log/nginx/error.log notice;

#进程ID
pid        /var/run/nginx.pid;

events {
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept off;  #设置一个进程是否同时接受多个网络连接,默认为off
     # epoll 模型对事件处理进行优化
    use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    #允许最大连接数
    worker_connections  5120;
}

#http块
http {
   # 相关安全漏洞响应头
   # 检测到目标 X-Content-Type-Options响应头缺失 这个暂时不开启,不然部分banner无法使用
   add_header X-Content-Type-Options nosniff;
   # 检测到目标 X-XSS-Protection响应头缺失
   add_header X-XSS-Protection "1; mode=block";
   # 检测到目标 Content-Security-Policy响应头缺失
   add_header Content-Security-Policy "default-src 'self' http: https://* data: blob: 'unsafe-eval' 'unsafe-inline';child-src 'none' " always;
   # 检测到目标 Referrer-Policy响应头缺失
   add_header Referrer-Policy "no-referrer-when-downgrade" always;
   # 检测到目标 X-Permitted-Cross-Domain-Policies响应头缺失
   add_header X-Permitted-Cross-Domain-Policies none;
   # 检测到目标 X-Download-Options响应头缺失
   add_header X-Download-Options noopen;
   # 检测到目标 Strict-Transport-Security响应头缺失
   add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

   add_header X-Frame-Options "SAMEORIGIN";
   #隐藏nginx版本信息
   server_tokens off;
   #文件扩展名与文件类型映射表
    include       /etc/nginx/mime.types;
     #默认文件类型,默认为text/plain
    default_type  application/octet-stream;
    
    #日志格式
    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 if=$ignore_ua;

    sendfile        on;
    #tcp_nopush     on;

     #连接超时时间,默认为75s,可以在http,server,location块。
    keepalive_timeout  65;

    #gzip  on;
    client_max_body_size 1024m;

     #包含的自定义配置文件块
    include /etc/nginx/conf.d/*.conf;

     #是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
    fastcgi_intercept_errors on;

   #Disable logging for ELB healthcheck. It creates lots of noise on logging platform
   ##关闭健康检测日志的输出
   map $http_user_agent $ignore_ua {
   default                 1;
   "clb-healthcheck"       0;

     }

}

 

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

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

相关文章

GIT提交、回滚等基本操作记录

1、add文件时warning: LF will be replaced by CRLF in .idea/workspace.xml. 原因:windows中的换行符为 CRLF, 而在Linux下的换行符为LF,所以在执行add . 时会出现以下提示 解决:git config core.autocrlf false 2、GIT命令&…

【linux】如何查看服务器磁盘IO性能

查看服务器磁盘IO性能 在服务器运维过程中,了解服务器的磁盘IO性能是非常重要的。磁盘IO性能直接影响到服务器的响应速度和处理能力。本文将介绍如何使用dd命令来查看服务器磁盘IO性能。 1. 什么是dd命令? dd命令是Linux系统中的一个非常强大的工具&a…

C++ 之LeetCode刷题记录(三)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅,多学多练,尽力而为。 先易后难,先刷简单的。 13、罗马数字转整数 罗马数字包含以下七种字符: I&#xff0c…

Java开发框架和中间件面试题(8)

目录 82.Mybatis一级缓存,二级缓存? 83.Mybatis如何防止SQL注入? 84.mybatis中resultType和resultMap有什么区别? 85.如何在SpringBoot中禁用Actuator断点安全性? 86.什么是SpringBoot?SpringBoot有哪些…

1.3MySQL中的自连接

自己的表和自己连接,核心:一张表拆为两张一样的表。 语法:select 字段列表 from 表 [as] 表别名1,表 [as] 表别名2 where 条件...; 关于怎样把一个表拆分成一个表,只要给它们分别取别名就行 categoryidpidcategoryname21信息…

单片机外设矩阵键盘之行列扫描识别原理与示例

单片机外设矩阵键盘之行列扫描识别原理与示例 1.概述 这篇文章介绍单片机通过行列扫描的方式识别矩阵键盘的按键,通过程序执行相应的操作。 2.行列扫描识别原理 2.1.独立按键识别原理 为什么需要矩阵按键 独立按键操作简单,当数量较多时候会占用单片机…

Flink1.17实战教程(第二篇:DataStream API)

系列文章目录 Flink1.17实战教程(第一篇:概念、部署、架构) Flink1.17实战教程(第二篇:DataStream API) Flink1.17实战教程(第三篇:时间和窗口) Flink1.17实战教程&…

MYSQL一一外键约束

概念:外键用来让两张表的数据之间建立联系,从而保证数据的一致性和完整性 建立外键: ①这是在建立表的时候建立外键的方法 ②这是在建立完表之后建立外键的方法: 删除外键: 现在有一张员工表(emp&#xf…

【easy-ES使用】1.基础操作:增删改查、批量操作、分词查询、聚合处理。

easy-es、elasticsearch、分词器 与springboot 结合的代码我这里就不放了,我这里直接是使用代码。 基础准备: 创建实体类: Data // 索引名 IndexName("test_jc") public class TestJcES {// id注解IndexId(type IdType.CUSTOMI…

C#获取windows系统资源使用情况

1.前言 之前有一篇博客介绍如何获取Linux服务器上的资源使用情况《Java 获取服务器资源(内存、负载、磁盘容量)》,这里介绍如何通过C#获取Window系统的资源使用。 2.获取服务器资源 2.1.内存 [DllImport("kernel32.dll")][retu…

CSDN规则详解——csdn那些你不知道的事儿(点赞、评论、收藏)

文章目录 每日一句正能量前言点赞评论收藏原力等级和博客等级后记 每日一句正能量 “只有奋斗者才能成为胜利者,只有坚持者才能创造奇迹。” - 迈克尔乔丹 这句话来自于世界著名篮球运动员迈克尔乔丹,他以无与伦比的天赋和努力成为了篮球界的传奇人物。他…

产品经理如何培养思维模式和创新能力?

作为一名产品经理,我们需要具备一定的思维模式和创新能力,以应对不断变化的市场和技术环境。在本文中,我将分享一些培养产品经理思维模式和创新能力的方法。 一、培养市场洞察力 作为产品经理,我们需要深入了解市场和用户需求&a…

表单(HTML)

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>个人信息</title></head><body><h1>个人信息</h1><form><fieldset><legend>基本信息</legend><label for"…

【日常聊聊】编程语言的未来:趋势、多样性、人工智能融合、教育与生态系统

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 1. 编程语言的发展趋势 1.1 新语言和编程范式的涌现 1.2 影响和挑战 2. 编程语言的多样性 2.1 互操作性和可移…

爬虫工作量由小到大的思维转变---<第三十章 Scrapy Redis 第一步(配置同步redis)>

前言: 要迈向scrapy-redis进行编写了;首要的一步是,如何让他们互通?也就是让多台电脑连一个任务(这后面会讲); 现在来做一个准备工作,配置好redis的同步!! 针对的是windows版本的redis同步,实现主服务和从服务共享一个redis库; 正文: 正常的redis for windows 的安装这里就…

制作gif动图软件,视频转gif动图生成器

生活在这个快节奏的时代&#xff0c;我们总是希望能够抓住那些转瞬即逝的美好。而gif动图&#xff0c;正是这样一种能够让时间静止、让美好定格的存在。从视频到gif动图&#xff0c;不仅仅是格式的转换&#xff0c;更是情感的传递与分享。 所需工具&#xff1a; 一个【媒体梦…

Fiddler工具 — 2.补充:HTTP协议介绍(一)

1、HTTP协议介绍 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写&#xff0c;是用于从万维网(WWW:World Wide Web )服务器传输超文本&#xff08;也可以说是资源&#xff09;到本地浏览器的传送协议。 HTTP协议是基于TCP协议的应用层协议&#xff0c;它不关心…

K8S 全局架构图 —— 筑梦之路

kube-apiserver&#xff1a; Kubernetes API 服务器验证并配置 API 对象的数据&#xff0c; 这些对象包括 pods、services、replicationcontrollers 等。API 服务器为 REST 操作提供服务&#xff0c;并为集群的共享状态提供前端&#xff0c; 所有其他组件都通过该前端进行交互。…

docker学习笔记01-安装docker

1.Docker的概述 用Go语言实现的开源应用项目&#xff08;container&#xff09;&#xff1b;克服操作系统的笨重&#xff1b;快速部署&#xff1b;只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统&#xff1b;Docker通过隔离机制&#xff0c;每个容器间是互相隔离…

Java可视化物联网智慧工地云平台源码支持人脸识别考勤

智慧工地是指利用云计算、大数据、物联网、移动互联网、人工智能等技术手段&#xff0c;为建筑施工现场提供智能硬件及物联网平台的解决方案&#xff0c;以实现建筑工地的实时化、可视化、多元化、智慧化和便捷化。智慧工地通过全新的工程全生命周期管理理念&#xff0c;利用物…