nginx基础2——配置文件详解(网页配置篇)

文章目录

  • 一、基本了解
  • 二、nginx.conf配置参数
    • 2.1 调试参数
    • 2.2 必配参数
    • 2.3 优化性能参数
    • 2.4 event{}段配置参数
    • 2.5 网络连接参数
    • 2.6 fastcgi配置参数
    • 2.7 总结常配参数
  • 三、http{}段配置参数
    • 3.1 配置结构
    • 3.2 精简配置网页
    • 3.3 location定义网页
      • 3.3.1 root path用法
      • 3.3.1 alias path用法
    • 3.4 监听端口
    • 3.5 配置错误页面
    • 3.5 自定义日志文件格式

一、基本了解

  • nginx安装方式比较多,yum安装和二进制安装的路径不同,配置文件路径在nginx安装目录下。
  • 默认启动nginx时,使用的配置文件是:安装路径/conf/nginx.conf文件。
  • 也可以在启动nginx时,通过-c选项指定其他配置文件启动。
配置文件类型作用释义
nginx.confnginx的基本配置文件一般都是修改这个配置文件参数。
mime.typesMIME类型关联的扩展文件默认被包含引用在主配置文件中,
当客户端访问网站网站、视频、超链接等内容时,是该文件起作用。
fastcgi.conf与fastcgi相关的配置通用网关接口配置。
proxy.conf配置方向代理需要编译时额外添加该功能。
sites.conf配置nginx提供的网站,包括虚拟主机需要编译时额外添加该功能。

二、nginx.conf配置参数

  • main配置段:全局配置段。其中main配置段中可能包含event配置段。
  • event {}:定义event模型工作特性。enents块配置参数
  • http {}:定义http协议相关的配置

1.配置指令语法如下,需要以分号结尾。

derective value1 [value2 ...];

2.支持使用变量。

内置变量:模块会提供内建变量定义。
自定义变量:set var_name value

2.1 调试参数

参数释义备注
daemon {on|off};是否以守护进程方式运行nginx,调试时应设置为off不实用
master_process {on|off};是否以master/worker模型来运行nginx,调试时可以设置为off默认能看到一个master进程,
关闭后只显示worker进程。
不利于业务,保持默认即可。
error_log {文件路径} {级别};配置错误日志。
日志级别:info、notice、warn、error、crit、alert、emerg
推荐使用
error_log配置位置格式释义
fileerror_log /error.log error这是nginx安装路径的相对路径,也可以写绝对路径。推荐使用
stderrerror_log stderr error输出标准错误日志,前台显示。
syslog:server=address[,parameter=value]error_log syslog:server=ip把日志记录到另外一台服务器上。
memory:sizeerror_log memory:4G记录到本机内存,存在丢失风险。

1.daemon参数用法。
在这里插入图片描述
在这里插入图片描述
2.master_process参数用法。
在这里插入图片描述
在这里插入图片描述
3.error_log参数用法。
在这里插入图片描述

在这里插入图片描述

2023/07/17 23:35:05 [error] 16083#0: *2 open() "/usr/local/nginx/html/sdsa" failed (2: No such file or directory), client: 192.168.161.1, server: localhost, reost: "192.168.161.129"//日志内容:
2023/07/17 23:35:05  //时间.
[error]   //日志级别.
16083     //作用该客户端请求的nginx进程号.
open() "/usr/local/nginx/html/sdsa" failed (2: No such file or directory)    //请求错误描述。
client: 192.168.161.1    //请求客户端。
server: localhost       //请求服务端。
reost: "192.168.161.129"    //服务端IP。

2.2 必配参数

参数释义备注
user USERNAME [GROUPNAME];指定运行worker进程的用户和组一般改为nginx用户。
pid /path/to/pid_file;指定nginx守护进程的pid文件取消注释
worker_rlimit_nofile {number};设置所有worker进程最大可以打开的文件数,默认为1024一般设置655350
worker_rlimit_core {size};指明所有worker进程所能够使用的总体的最大核心文件大小保持默认即可

1.配置以上参数。

user  nginx;
worker_rlimit_nofile 655350 ;
pid     logs/nginx.pid;

2.重启nginx即可。

nginx -s stop
nginx

2.3 优化性能参数

参数释义备注
worker_processes {n};启动n个worker进程,可以避免CPU上下文切换。
通常设置为cpu总核心数-1
与worker_connections参数配合使用,
两个参数共同作用计算nginx对外提供的负载量。
worker_cpu_affinity {cpu编码};将进程绑定到某cpu中,避免频繁刷新缓存
使用8位二进制表示cpu核心。
0000 0001 ,表示第一颗cpu核心。
0000 0010 ,表示第二颗cpu核心。
0000 0100 ,表示第三颗cpu核心编码。
0000 1000 ,表示第四颗cpu核心。
0001 0000 表示第五颗cpu核心。
0010 0000 ,第六颗cpu核心。
0100 0000 ,表示第七颗cpu核心。
1000 0000 ,表示第八颗cpu核心。
示例:worker_cpu_affinity 0001
表示第一个cpu只处理这个进程任务。
timer_resolution interval;计时器解析度。降低此值,可减少gettimeofday()系统调用的次数保持默认
worker_priority {number};指明worker进程的nice值,number值可选范围[-20,20]。设置进程运行优先级。
nice值越低,优先级越高。

1.worker_priority参数示例。

在这里插入图片描述

2.4 event{}段配置参数

参数释义备注
accept_mutex {off|on};master调度用户请求至各worker进程时使用的负载均衡锁。
on表示能让多个worker轮流地、序列化地去响应新请求。
保持默认
lock_file file;accept_mutex用到的互斥锁锁文件路径保持默认
use [epoll | rtsig | select | poll];指明使用的事件模型,建议让nginx自行选择保持默认
worker_connections ;每个进程能够接受的最大连接数与worker_processes参数配合使用

2.5 网络连接参数

参数释义
keepalive_timeout number;长连接的超时时长,默认为65s
keepalive_requests number;在一个长连接上所能够允许请求的最大资源数
keepalive_disable [msie6|safari|none];为指定类型的UserAgent禁用长连接
tcp_nodelay on|off;是否对长连接使用TCP_NODELAY选项,为了提升用户体验,通常设为on
client_header_timeout number;读取http请求报文首部的超时时长
client_body_timeout number;读取http请求报文body部分的超时时长
send_timeout number;发送响应报文的超时时长
//案例.
公司开发了一款app,需要在app上连接服务器,在服务器里面下载文件到客户端里去,但当时怎么都下载不下来。发现是因为文件太大,所以就把长连接超时时间调大,但不能调太大,同时也要双管齐下,把公司服务端带宽调高。

2.6 fastcgi配置参数

  • 与后端程序交接的桥梁。
  • LNMP:php要启用fpm模型,把一下字段全部取消注释即可。
location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;      //定义反向代理fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;
}

2.7 总结常配参数

//指定错误日志。
error_log {文件路径} {级别};  //指定运行worker进程的用户。
user nginx//指定nginx守护进程的pid文件。
pid /path/to/pid_file; //置所有worker进程最大可以打开的文件数。
worker_rlimit_nofile 655350//指定nginx最大连接数,两个参数值相乘。
worker_processes 3;
worker_connections 1024;//cpu核心与进程绑定。
worker_cpu_affinity 0001 0010 0100;//设置进程优先级。
worker_priority -20;//设置长连接。
keepalive_timeout 65;

三、http{}段配置参数

  • http{}段配置是核心,单独拿出来演示。
  • http{…}:配置http相关,由ngx_http_core_module模块引入。

3.1 配置结构

  • nginx的HTTP配置主要包括四个区块,结构如下。
  • server_name NAME […]; 后面可跟多个主机,名称可使用正则表达式或通配符。当有多个server时,匹配顺序如下:
    1. 先做精确匹配检查。
    2. 左侧通配符匹配检查,如*.idfsoft.com
    3. 右侧通配符匹配检查,如mail.*
    4. 正则表达式匹配检查,如~ ^.*.idfsoft.com$
    5. default_server
http {           //协议级别include mime.types;default_type application/octet-stream;keepalive_timeout 65;gzip on;upstream {       //负载均衡配置,属于第三方模块,可以有多个upstream配置段。...}server {      //一个server代表一个网站,可以有多个server配置段。listen 80;   //网站访问端口。server_name www.qingjun.com;    //网站域名。location / {     //网页文件路径。/代表根路径,也就是/usr/local/nginx/html这个路径。root html;    //访问的URI。当为root时,需要配合上面的/来查找,时相对路径;当为alias时,直接指定绝对路径。index index.html index.htm;  //默认首页,从第一个文件开始查找。}}
}

3.2 精简配置网页

1.不定义location块,直接指定网页文件绝对路径。网页文件默认名称为index.html。

......
http {server {listen       80;server_name  www.qingjun.com;root   /opt;    //让进程从/opt目录下查找网页文件,这里必须是绝对路径。}
}

2.配置网页文件。

echo 'hehe' > /opt/index.html

3.重启服务,访问网页。

在这里插入图片描述

4.修改网页文件名称,再访问查看效果。
在这里插入图片描述

在这里插入图片描述

3.3 location定义网页

  • location的请求页面有两种玩法,一个时根据root来查找网页文件,一个是根据alias来查找网页文件。
    • root path:最终访问的是,root指定路径+location指定的uri,组合起来才是完整的前端文件绝对路径。
    • alias path:最终访问的是,alias后面定义的绝对路径。

3.3.1 root path用法

1.如下图,root指定路径为/usr/local/nginx/html,location指定的uri为/usr/local/nginx/html的相对路径,所以会从/usr/local/nginx/html路径下查找index.html文件。

在这里插入图片描述
2.指定访问其他路径下的index.html网页文件。
在这里插入图片描述
3.指定访问其他路径下的非index.html网页文件。

在这里插入图片描述

3.3.1 alias path用法

  • 网页访问时,需要跟上location后面的uri,才能访问到alias指定的绝对路径下的首页文件。

1.例一。

在这里插入图片描述

2.例二。
在这里插入图片描述

3.4 监听端口

1.可以通过IP+PORT指定。在这里插入图片描述
2.也可以通过纯IP指定,默认端口为80.

在这里插入图片描述

3.5 配置错误页面

  • 可以自定义错误页面。

1.指定错误页面文件地址。

在这里插入图片描述
2.定义错误页面文件。

<html>
<head><title>hehe</title>
</head>
<body><font size="50"><p>How are you today.</p></font>
</body></html>

在这里插入图片描述
3.重启服务,访问一个不存在的页面。
在这里插入图片描述
4.自定义错误返回状态码为200。

http {server {listen  192.168.161.129;server_name  www.qingjun.com;location / {root html;index index.html index.htm;}}error_page 404 =200 /404.html;
}

在这里插入图片描述
5.自定义错误返回调用其他网址。

<html>
<head><title>hehe</title>
</head>
<body><a href="http://www.baidu.com">baidu</a>
</body></html>             

2.访问错误网页,调用到百度网址。

在这里插入图片描述

3.5 自定义日志文件格式

1.修改nginx配置文件。

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;    //这里的main与上面定义main名称必须一致。

在这里插入图片描述

2.访问网站,查看输出的日志。

在这里插入图片描述

192.168.161.1 - - [18/Jul/2023:04:18:49 +0800] "GET /sda HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.58" "-"//配置文件定义日志参数与收集的日志数据对比:'$remote_addr:客户端ip,日志为192.168.161.1-:-$remote_user:客户端用户,日志为-[$time_local]:本地时间,日志为 [18/Jul/2023:04:18:49 +0800]$request" :访问内容,日志为"GET /sda HTTP/1.1"$status:返回状态,日志为200$body_bytes_sent:客户端发送的字节数,日志为0"$http_referer":客户端从哪里跳转过来访问的,日志为-
"$http_user_agent":客户端访问的浏览器类型,日志为"Mozilla/5.0......Edg/114.0.1823.58"
"$http_x_forwarded_for"':客户端从哪里转发过来的,日志为-

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

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

相关文章

哪些方法可以一键批量查询快递单号

想做好电商或者物流行业&#xff0c;可千万不能虎头蛇尾&#xff0c;前端的高效并不够&#xff0c;我们还要做好后端的及时跟踪维护。当大量快递集中发出之后&#xff0c;我们必须及时地跟踪物流信息&#xff0c;掌握快递的动态&#xff0c;小编今天要和大家安利一款实用的辅助…

Linux系统部署Tomcat详细教程(图文讲解)

前言&#xff1a;本篇博客教大家如何一步一步使用Linux系统去部署自己的Tomcat服务器&#xff0c;每一行代码都是我自己严格执行过的&#xff0c;共分为了8点进行阐述&#xff0c;逻辑清晰&#xff01; 目录 一、安装JDK环境 二、准备Tomcat安装包 三、安装Tomcat 四、配置…

Nuxt.js--》解密Nuxt.js:构建优雅、高效的现代化Vue.js应用

博主今天开设Nuxt.js专栏&#xff0c;带您深入探索 Nuxt.js 的精髓&#xff0c;学习如何利用其强大功能构建出色的前端应用程序。我们将探讨其核心特点、灵活的路由系统、优化技巧以及常见问题的解决方案。无论您是想了解 Nuxt.js 的基础知识&#xff0c;还是希望掌握进阶技巧&…

精智达在科创板上市:募资约11亿元,深创投等为其股东

7月18日&#xff0c;深圳精智达技术股份有限公司&#xff08;下称“精智达”&#xff0c;SH:688627&#xff09;在上海证券交易所科创板上市。本次上市&#xff0c;精智达的发行价为46.77元/股&#xff0c;发行数量为2350.2939万股&#xff0c;募资总额为10.99亿元&#xff0c;…

10-2. 数组 Array 的实例方法

本文并没有写出数组的全部使用方法&#xff0c;想看全的可以看一下这个 Array - JavaScript | MDN 目录 1 常用内置方法 1.1 合并数组 concat() 1.2 复制元素覆盖到指定位置 copyWithin() 1.3 返回其他变量的数组形式 Array.from() 1.3.1 基本使用 1.3.2 将伪数组…

【Linux】udp服务器实现大型网络聊天室

udp终结篇~ 文章目录 前言一、udp服务器实现大型网络聊天室总结 前言 根据上一篇文章中对于英汉互译和远程操作的两个小功能大家应该已经学会了&#xff0c;我们的目的是让大家可以深刻的理解udp服务器所需要的接口已经实现的简单步骤&#xff0c;下面我们开始实现网络聊天室。…

2023最新版本Activiti7系列-网关服务

网关篇 网关可控制流程的执行流向&#xff0c;常用于拆分或合并复杂的流程场景。在Activiti7中&#xff0c;有以下几种类型的网关&#xff1a; 排他网关&#xff08;Exclusive Gateway&#xff09;&#xff1a;用于在流程中进行条件判断&#xff0c;根据不同的条件选择不同的分…

使用wxPython和pillow开发拼图小游戏(四)

上一篇介绍了使用本地图片来初始化游戏的方法&#xff0c;通过前边三篇&#xff0c;该小游戏的主要内容差不多介绍完了&#xff0c;最后这一篇来介绍下游戏用时的计算、重置游戏和关闭窗口事件处理 游戏用时的计算 对于游戏用时的记录&#xff0c;看过前几篇的小伙伴可能也发现…

linux之Ubuntu系列(-)常见指令

Ubuntu 中文 版本 注意点 通过修改语言改成英文 在终端录入&#xff1a;export LANGen_US 在终端录入&#xff1a;xdg-user-dirs-gtk-update 单用户和多用户 命令格式 command [-选项] [参数] –查看命令的帮助 命令 --help man 命令 |操作键| 功能| |空格键|-显示手册的下…

15 - 堆栈 - 大顶堆

前面我们学习了小顶堆,相信大家都已经有点概念了,今天来了解一下大顶堆。 大顶堆示意图 堆数组存放的公式 我们用简单的公式来描述一下堆的定义就是: 大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2] 小顶堆:arr[i] <= arr[2i+1] && a…

2023 最新版网络安全保姆级指南,手把手带你从零基础进阶渗透攻防工程师

前言 一份网络攻防渗透测试的学习路线&#xff0c;不藏私了&#xff01; 1、学习编程语言(phpmysqljshtml) 原因&#xff1a;phpmysql 可以帮助你快速的理解 B/S 架构是怎样运行的&#xff0c;只有理解了他的运行原理才能够真正的找到问题/漏洞所在。所以对于国内那些上来就…

SRT对比TCP协议的优缺点

主流的流媒体协议&#xff0c;如HTTP&#xff0c;HLS&#xff0c;RTMP是TCP协议&#xff0c;而RTSP既可以基于TCP也可基于UDP协议进行数据传输。 从趋势来看&#xff0c;新的流媒体协议大都选择UDP作为底层传输协议&#xff0c;其主要原因和流媒体业务本身的特性及TCP特性有关。…