Nginx—nginx.conf 配置结构详解

一、nginx.conf 配置结构

函数

说明

main

全局配置

event

配置工作模式以及连接数

http

http模块相关配置

server

虚拟主机配置,可以有多个

location

路由规则,表达式

upstream

集群、内网服务器(负载均衡也在这里边配)

二、Nginx配置语法

基本的语法:

指令集组成:每个指令单独写一行,每个指令分号 ";" 分开,每个指令块用大括号 "{ ... }" 分开,大括号的后方没有分号。注释用#号分开。

$符号:$符号为nginx内部提供的一些参数变量。

三、nginx.conf 核心配置文件详解

 

函数

说明

main

全局配置

event

配置工作模式以及连接数

http

http模块相关配置

server

虚拟主机配置,可以有多个

location

路由规则,表达式

upstream

集群、内网服务器(负载均衡也在这里边配)

 

主配置文件详解

#user  nobody;                   #表示当系统在执行worker进程的时候由哪个用户去执行,(默认为nobody)
worker_processes  10;            #逻辑CPU的个数设置的值为:(n-1)# nginx的日志级别:debug info notice warn error crit 等级逐渐升高。#error_log  logs/error.log;      #错误的日志,在编译的时候已经设置相关的路径。
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {#默认使用epolluse epoll;#每个worker允许的客端最大连接数worker_connections  1024;
}http {include       mime.types;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  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       8080;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

(一)main 全局配置模块

1、进程用户设置

user root;
worker_processes 10;
worker_rlimit_nofile 65535;

 

  1. user root;
    • 这一配置项指定了 Nginx 工作进程所使用的用户身份。root 是系统中的超级用户,拥有最高权限。不过,从安全角度考虑,不建议让 Nginx 以 root 用户身份运行,因为这会使 Nginx 拥有过高的权限,一旦出现安全漏洞,攻击者可能会获取系统的最高控制权。通常,建议创建一个专门的低权限用户来运行 Nginx。
  2. worker_processes 4;
    • 此配置项用于设置 Nginx 工作进程的数量。Nginx 采用多进程模型,一个主进程(master process)负责管理多个工作进程(worker processes),工作进程负责处理实际的客户端请求。4 代表创建 4 个工作进程。一般而言,可以根据服务器的 CPU 核心数来设置该值,通常设置为 CPU 核心数或者核心数的两倍,这样能充分利用服务器的 CPU 资源。
  3. worker_rlimit_nofile 65535;
    • 该配置项设定了每个 Nginx 工作进程能够打开的最大文件描述符数量。在 Linux 系统里,一切皆文件,包括网络连接、磁盘文件等,每个打开的文件或者连接都会占用一个文件描述符。65535 意味着每个工作进程最多可以同时打开 65535 个文件描述符。当服务器需要处理大量并发连接时,就需要增大这个值,防止出现 “too many open files” 的错误。

2、 nginx日志路径设置

#error_log  logs/error.log;      #错误的日志,在编译的时候已经设置相关的路径放:/var/log/nginx/
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

 3、存放pid的地方

#pid        logs/nginx.pid;     #进程号存在的路径,在编译的时候已经设置相关的路径放:/var/run/nginx/

 (二)、events配置工作模式以及连接数

events {#默认使用epolluse epoll;#每个worker允许客端连接的最大连接数,根据硬件的配置来选值的大小。worker_connections  1024;
}

(三)、http相关网络传输的模块(包含了很多的配置内容)

http {include       mime.types;   #导入外部的文件,文件中为指令块,当前目录的mime.types文件。default_type  application/octet-stream;    #默认的type类型。*********************************************日志模块分析**********************************************************#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  #access_log 日志的格式,可以自定义格式。#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;***参数注解区****# $remote_addr               客户端的IP地址# $remote_user               用户名称,可以是 "-"# [$time_local]              访问时间# $request                   请求的内容包括:URL 请求的方法GET、POST# $status                    响应的状态码# $body_bytes_sent           客户端发送的文件主体所包含内容的字节数# $http_referer              记录着用户从哪个访问链接跳转过来的,我们在做日志分析的时候会用到。# $http_user_agent           用户的代理# $http_x_forwarded_for      可以记录客户端的IP**********************************************************************************************************************************sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       8080;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

mime.types文件

3.1、日志格式

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  #access_log 日志的格式,可以自定义格式。#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;***参数注解区****# $remote_addr               客户端的IP地址# $remote_user               用户名称,可以是 "-"# [$time_local]              访问时间# $request                   请求的内容包括:URL 请求的方法GET、POST# $status                    响应的状态码# $body_bytes_sent           客户端发送的文件主体所包含内容的字节数# $http_referer              记录着用户从哪个访问链接跳转过来的,我们在做日志分析的时候会用到。# $http_user_agent           用户的代理# $http_x_forwarded_for      可以记录客户端的IP

3.2、文件的高效传输

    sendfile        on;          #打开,表示文件传输的性能会得到提升,nginx的性能也得到相应的提升。#tcp_nopush     on;          #和sendfile一起使用,表示当我们的数据包累积到一定的大小之后再发送,可以提高传输的效率。先取数据在进行统一分发。

3.3、客户端连接服务器的超时时间(传输完成后保持的时间)

   keepalive_timeout  65;            #以秒为单位,http有keepalive机制,当数据传输完成之后会保持一定时间的连接处于打开状态,如果客户端有新的请求会用此连接去处理。不用创建新的连接,节省资源的开销。

3.4、gzip压缩

#gzip  on;      #内容的传输经过压缩之后体积变小,提升的传输速率,减少了带宽的产生,但是在压缩的过程中会消耗我们系统上CPU的性能。

3.5、server模块,虚拟主机相关配置

    server {listen       8080;                #服务端口号server_name  localhost;           #服务IP、域名#charset koi8-r;#access_log  logs/host.access.log  main;location / {                      #配置页面显示的路由:locationroot   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;         #访问错误的时候会返回相应的状态值。location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

3.5.1 在nginx.conf文件中添加新的server模块。
    server {listen       8888;               #指定的服务端口为8888server_name  127.0.0.1;          #指定的服务器的名称是127.0.0.1location / {root   html;index  test.html index.htm;  #访问到的内容为test.html文件            }  

3.5.2 添加test.html文件:/usr/local/nginx/html/test.html 

 

 

3.6、通过include函数的调用server模块的配置,提高文件的可读性。

3.6.1 在nginx.conf文件中定义include调用server模块(支持正则匹配)

可用统一将配置文件放在/usr/local/nginx/conf/conf.d指定的路径下这样方便管理,如:

  • HTTP相关的配置放在:/usr/local/nginx/conf/conf.d/http 目录下
  • TCP相关的配置放在:/usr/local/nginx/conf/conf.d/tcp 目录下
user root;
worker_processes 4;
worker_rlimit_nofile 65535;events {...
}include conf.d/tcp/*.conf;  #TCP相关配置(不能放在下边的HTTP模块中不然会报错);这里的include是指包含/usr/local/nginx/conf/conf.d/tcp路径下所有的.conf。http {...include conf.d/http/*.conf; #HTTP相关配置(需要放在HTTP模块中不然会报错);这里的include是指包含/usr/local/nginx/conf/conf.d/http 路径下所有的.conf
}

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

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

相关文章

斐波那契数列----C语言

关于斐波那契 已知: 问题背景:一对兔子从第3个月开始每月生一对新兔子,新兔子同样在第3个月开始繁殖。 关键观察: 第1个月:1对(初始兔子)。 第2个月:1对(未成熟&#…

vulhub靶场—— Tomcat8

目录 一、漏洞描述 二、靶场搭建 三、漏洞复现 1、弱密码 2、文件上传 一、漏洞描述 环境描述: Tomcat 支持后台部署 war 文件,可以直接将 webshell 部署到 web 目录下。tomcat 默认的管理页面 manager 使用 basic 认证用户名和密码登录&#xff0…

使用 Spring AI Aliabab Module RAG 构建 Web Search 应用

使用 Spring AI Alibaba 构建大模型联网搜索应用 Spring AI 实现了模块化 RAG 架构,架构的灵感来自于论文“模块化 RAG:将 RAG 系统转变为类似乐高的可重构框架”中详述的模块化概念。 Spring AI 模块化 RAG 体系 总体上分为以下几个步骤: …

一些练习 C 语言的小游戏

一些练习 C 语言的小游戏 — 1. 猜数字游戏 描述:程序随机生成一个数字,玩家需要猜测这个数字,并根据提示(太高或太低)调整猜测,直到猜中为止。 功能点: 随机数生成 (rand() 函数)。循环和…

关于中文编程的一些思考

随着信息化与数字化的发展,工业4.0时代亦将徐徐到来。当计算机的普及程度越来越高,数据的产生、传输、处理等变得越来越快、越来越大量的时候,人们想要自动化办公的愿望也越来越强烈,希望能将自身从耗费脑力但是重复繁琐的工作中解…

golang 日志log与logrus

目录 一、Go 标准库 log 详解 1. 功能特点 2. 常用函数 3. 示例代码 4. 优势和局限 二、第三方库 logrus 详解 1. 功能特点 2. 核心功能 3. 示例代码 4. 优势和扩展性 三、总结 1. 何时选择 log? 2. 何时选择 logrus? 3. 对比总结 一、Go 标…

消费品行业创新创业中品类创新与数字化工具的融合:以开源 AI 智能客服、AI 智能名片及 S2B2C 商城小程序为例

摘要: 本文聚焦于消费品行业的创新与创业,深入探讨“选择大于努力”这一观点,强调品类选择在品牌发展中的关键作用。同时,详细分析了品类创新对于新消费品牌崛起以及传统品牌转型的重要意义。在此基础上,引入开源 AI 智…

Razer macOS v0.4.10快速安装

链接点这里下载最新的 .dmg 文件。将下载的 .dmg 映像文件拖入 应用程序 文件夹中。若首次打开时出现安全警告【什么扔到废纸篓】,这时候点击 Mac 的“系统偏好设置”-> “安全性与隐私”-> “通用”,然后点击底部的 “打开”。【或者仍然打开】 对…

Flask项目部署:Flask + uWSGI + Nginx

目录 1,网络架构 2,环境安装 2.1,安装yum:Shell软件包管理器 2.2 安装python 2.3 安装uWSGI 2.4 安装Flask 3,上传工程包到服务器,打包Flask项目 4,创建和配置 uwsgi 配置文件 uwsgi.ini 4.1配置文件 4.2配置文件注释详解 5,启动服务 6,安装nginx 7,nginx配置 8,…

[FPGA基础学习]实现流水灯与按键暂停

FPGA实现LED流水灯 1.vscode的安装和使用 vscode下载 Visual Studio Code - Code Editing. Redefined vscode插件(Verilog-HDL/SystemVerilog)下载 quartus绑定vscode 2.用6个LED完成周期为1秒的跑马灯效果 流水灯模块设计 时钟输入 DE2-115开发板…

【TensorRT】TensorRT从安装到推理——Python 环境下 MobileNetV4 三分类任务

我想开发一个基于深度学习的分类小软件,逐渐了解到了TensorRT在模型推理速度上的优势,经过一下午资料的查找实现了将onnx模型转为TensorRT格式模型的推理及测试过程。将实现过程记录下来方便日后查看。 本文实验设备是MX350显卡 2G显存 一 、安装Tenso…

1.两数之和(Java)

1. 题目描述 LeetCode 1. 两数之和(Two Sum) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回它们的索引。 示例 1: 输入:nums [2,7,11,15], target 9 …

《深入探索 Python 数据分析:用 Pandas 高效处理与可视化大型数据集》

《深入探索 Python 数据分析:用 Pandas 高效处理与可视化大型数据集》 引言:从零到分析高手 数据是当代社会最宝贵的资源,而数据分析技能是现代职业人不可或缺的一部分。在数据科学的领域中,Python 已成为当之无愧的“首选语言”,其强大的生态系统和简洁的语法让人如虎添…

将树莓派5当做Ollama服务器,C#调用generate的API的示例

其实完全没这个必要,性能用脚后跟想都会很差。但基于上一篇文章的成果,来都来了就先简单试试吧。 先来看看这个拼夕夕上五百多块钱能达到的效果: 只要对速度没要求,那感觉就还行。 Ollama默认只在本地回环(127.0.0…

python基础学习二(列表及字典的使用)

文章目录 列表列表的创建获取列表中的多个元素判断列表中元素是否存在列表元素的添加操作列表元素的删除操作列表元素的修改列表的排序列表生成式 字典字典的创建字典的常规操作字典的常用操作字典的视图操作字典元素的遍历字典的特点字典的生成式 列表 一个对象由id&#xff0…

Android设计模式之代理模式

一、定义: 为其他对象提供一种代理以控制对这个对象的访问。 二、角色组成: Subject抽象主题:声明真是主题与代理的共同接口方法,可以是一个抽象类或接口。 RealSubject真实主题:定义了代理表示的真实对象&#xff0c…

国外计算机证书推荐(考证)(6 Sigma、AWS、APICS、IIA、Microsoft、Oracle、PMI、Red Hat)

文章目录 证书推荐1. 六西格玛 (6 Sigma)2. 亚马逊网络服务 (AWS)3. 美国生产与库存控制学会 (APICS)4. 内部审计师协会 (IIA)5. 微软 (Microsoft)6. 甲骨文 (Oracle)7. 项目管理协会 (PMI)8. 红帽 (Red Hat) 证书推荐 1. 六西格玛 (6 Sigma) 介绍:六西格玛是一种…

用mkdocs写文档#自动更新github-page

https://wuyisheng.github.io/blog 背景是上一篇博客 使用mkdocs,最后提及可以部署github page。这里说明下怎么自动部署。 当然,这篇博客主要的目的还是提供下github page的链接 :) 我是这样做的: step 1: pip3 i…

QT五 文件系统,QFile,QfileInfo

总览 QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现。QFlie:访问本地文件或者嵌入资源;QTemporaryFile&a…

EF Core表达式树

文章目录 前言一、表达式树与委托的区别二、动态构建表达式树示例1示例2示例3高级技巧:表达式合并 三、ExpressionTreeToString安装方法基本用法支持的格式化风格 四、注意事项总结 前言 在 Entity Framework Core 中,表达式树(Expression T…