Nginx快速入门:安装目录结构详解及核心配置解读(二)

0. 引言

上节我们讲解了nginx的应用场景和安装,本节继续针对nginx的各个目录文件进行讲解,让大家更加深入的认识nginx。并通过一个实操案例,带大家来实际认知nginx的核心配置

1. nginx安装目录结构

首先nginx的默认安装目录为:/etc/nginx,默认日志目录为:/var/log/nginx

我们在安装目录下可以看到如下文件:
在这里插入图片描述
可以通过tree指令查看树形目录结构

# 注意提前安装tree工具
yum install tree -y
# 查看目录树形结构
tree /etc/nginx

在这里插入图片描述

或者大家可以通过rpm -ql nginx 指令,查询到nginx的相关目录
在这里插入图片描述

下面我们首先针对nginx的安装目录做详细讲解:

  • nginx.conf

nginx的主配置文件

  • conf.d

nginx的自定义配置文件存放路径,默认在nginx.conf最后指定了加载conf.d中的所有.conf文件,后续我们自定义配置的转发配置都会存放在该文件夹中

  • modules

Nginx的一个重要特性就是支持高拓展性,可以通过灵活的加载各类拓展模块,从而丰富nginx的功能
Nginx的modules文件夹包含了Nginx的各种功能模块。这些模块可以通过配置文件进行加载和启用,以扩展Nginx的功能。modules文件夹中的每个模块都有一个对应的配置文件,这些配置文件定义了模块的具体行为。

  • mime.types

Nginx的mime.types文件用于指定不同文件类型的MIME类型。MIME(Multipurpose Internet Mail Extensions)类型是一种用于标识互联网上传输的文件类型的标准。当浏览器或其他客户端请求某个文件时,Nginx会根据文件的扩展名和mime.types文件中定义的规则返回相应的MIME类型。
在这个文件中,你可以定义各种文件类型及其对应的MIME类型。例如,可以将.jpg文件类型定义为image/jpeg,将.html文件类型定义为text/html等

  • fastcgi_params

fastcgi配置参数,fastcgi是由CGI(common gateway interface 通用网关接口)发展而来,是nginx和php脚本语言之间的通信接口

  • scgi_params

用于处理SCGI(Simple Common Gateway Interface)请求。SCGI是一种简单的CGI实现,它允许Nginx与Python等语言的处理程序进行通信

  • uwsgi_params

用于处理uWSGI请求。uWSGI是一种高性能的Python应用Web服务器,它允许Nginx与Python应用程序进行高效交互

其他常用目录或文件解析:

  • /usr/share/nginx/html

nginx默认存放静态html页面的目录位置,自带了50x错误码页面和nginx首页

  • /var/log/nginx

nginx的日志文件目录,包括error.log和access.log
error.log为nginx报错日志,access.log为nginx访问日志目录,包括了详细的转发请求日志,可以记录请求的来源ip、客户端设备、目标ip、耗时、请求头、请求方式等,该日志在企业生产中非常常用,能够为我们排查接口请求问题和分析请求耗时提供有力的帮助。下一节我们将详细介绍如何自定义该日志文件格式
在这里插入图片描述

  • /usr/sbin/nginx

nginx的二进制脚本,包括启动、停止、重启等指令

2. nginx核心配置项

nginx的默认核心配置文件nginx.conf,nginx的配置项总共可分成6个模块:

  • 全局段:全局配置,对全局生效;
  • events段:配置影响 Nginx 服务器与用户的网络连接;
  • http段:配置代理、缓存、日志等功能和第三方模块的配置,基本是nginx中最常用的配置;
  • server段:配置虚拟主机的相关参数,一个 http 块中可以有多个server 块;
  • location段:用于配置匹配的uri
  • upstream段:配置后端服务器具体地址,负载均衡配置

在这里插入图片描述

下面详细讲解6个部分:

  • 1、全局段核心参数

user nginx; # 指定我们Nginx服务的运行用户

worker_processes 1; # 定义Nginx的worker进程数量,一般与服务器CPU核数保持一致

worker_processes auto; # 与当前cpu物理核心数一致

error_log /var/log/nginx/error.log warn; # 指定Nginx错误日志

pid /var/run/nginx.pid; # 指定Nginx PID进程号文件

daemon off ; 指定 Nginx 的运行方式,默认是on,后台运行模式;前台用于调试,后台用于生产

  • 2、events段核心参数

worker_connections 1024; # 指定Nginx当前一个worker进程的最大并发连接数,即并发能力

  • 3、http段核心参数

include /etc/nginx/mime.types; # 应用文件拓展名和文件类型映射文件

default_type application/octet-stream; # 默认文件类型,当Nginx无法识别当前访问页面内容时,触发下载动作

log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 指定Nginx访问日志格式,下节详细讲解

access_log /var/log/nginx/access.log main; # 定义Nginx访问日志的位置

sendfile on; # 开启文件传输模式

keepalive_timeout 65; # 连接保持超时时间,单位秒,值为0时表示不超时,当Nginx建立TCP连接之后,多长时间没有动作,自动断开

include /etc/nginx/conf.d/*.conf; # 加载自定义的配置文件

#tcp_nopush on; # 减少网络报文段的数量

send_timeout 60s; # 如果在设置的时间内 Nginx 还没有将响应完全发送出去,则会返回 “408 Request Time-out” 错误,默认为60s

keepalive_timeout 60s; # 用于设置 Nginx 保持连接的超时时间。当浏览器发送请求时,如果它已经与 Nginx 建立了连接,则可以直接使用该连接发送请求,而不需要再次建立连接。这样就可以减少建立连接的开销,提高性能

gzip on; # 开启 gzip 文件压缩,浏览器加载的包大概能节约一半的空间,能够很好的提升浏览速度。gzip压缩的详细参数见下文
gzip_vary on; #设置使用Gzip进行压缩发送是否携带“Vary:Accept-Encoding”头域的响应头部
gzip_comp_level 6; #设置Gzip压缩程度,级别从1-9,1表示程度最低,效率最高,9压缩程度最高,效率最低最费时间
gzip_min_length 1k; #设置允许压缩的页面最小字节数
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; #压缩的文件类型

我们在conf.d/default.conf可以看到默认的转发配置,我们借此解读下server段、location段配置

  • 4、server段核心参数:

listen 80; # 监听的端口
server_name www.xxx.com; # 通过什么网址、域名请求过来的;可以设置多个,用英文逗号隔开
#error_page 404 /404.html; # 访问路径不存在时的显示页面
error_page 500 502 503 504 /50x.html; # 内部报错的显示页面

  • 5、location段核心参数

location / { # 根路径 uri
root /html/xxx; # 网站的根目录位置,即静态页面目录
index index.html; # 指定首页文件
}

proxy_pass http://127.0.0.1/xxx/; # 配置转发的路径或负载均衡upstream别名,后文详细讲解

proxy_connect_timeout 3s; # 连接后台服务器的超时时间
proxy_read_timeout 3s; # 从后台服务器读取数据的超时时间
proxy_send_timeout 3s; # 向后台服务器发送数据的超时时间

  • 6、upstream段核心参数

upstream test { # 负载均衡配置别名,一般配合proxy_pass使用,比如proxy_pass http://test/;
server 192.168.0.1 weight=1; # 以权重1:2转发至两个服务
server 192.168.0.2 weight=2;
}

3. 配置案例

实现需求:

配置nginx,实现当访问nginx时轮询转发至后台的两个tomcat服务
在这里插入图片描述

实现步骤:
1、准备两个tomcat服务,充当后台服务,将其中一个tomcat的端口修改为8081,并且调整两个tomcat的首页,显示其对应的端口号,后续好区分对应的服务

tomcat安装包下载:https://tomcat.apache.org/download-80.cgi

vim /data/tomcat1/webapps/ROOT/index.jsp

在这里插入图片描述
在这里插入图片描述

2、注意虚拟机放开8080,8081端口、或者关闭防火墙,访问tomcat验证下
在这里插入图片描述
3、修改conf.d/default.conf中的配置

# 后台服务地址,自定义一个负载均衡别名tomcat
upstream tomcat {server 192.168.244.41:8080;server 192.168.244.41:8081;
}server {listen       80;server_name  localhost;location / {proxy_pass http://tomcat; # 通过别名实现负载均衡转发proxy_set_header HOST $host; # 代理过程中添加host头部信息,防止通过ip访问时域名解析不到,不能被server_name解析到proxy_http_version 1.1; # 指定http协议版本}
}

如果转发的后台服务只有一个,那么proxy_pass就可以直接配置转发的服务地址,也不用配置upstream负载均衡了

4、检测nginx配置并重启服务

# 检测nginx配置,如果输出 success  字样则表示检测成功,nginx配置无语法错误
nginx -t 
# 热加载重启,nginx采取热部署的方式,重启期间不会中断服务
nginx -s reload

5、配置好后我们访问虚拟机ip,通过刷新可以看到可以轮询访问到两个不同的后台tomcat

在这里插入图片描述

在这里插入图片描述

总结:
如上,我们通过upstream定义了要转发的后台tomcat服务的列表,如果不做特殊定义,默认的负载均衡算法就是轮询算法,后续我们会单独开一章来详细说明nginx的负载均衡配置。

然后在server中定义了监听的端口是80端口,这样当我们通过80端口进来的访问就会进入到这个转发配置中

因为这里没有什么特殊的域名,所以server_name就定义了一个localhost

location后指定了/, 表示对所有路径生效,如果我配置的是/xxx,则只有当我们访问192.168.244.41/xxx开头的链接时才会走该转发配置

proxy_set_header参数的作用是可以设置指定的header给后台服务,这里配置了Host header, 即转发了用户访问的真正域名,否则后端服务得到的是nginx的ip, 这样对于一些动态拼接的地址,后端服务可以在服务器正确返回

proxy_http_version 1.1指定了http协议的版本,nginx代理默认http协议版本是1.0,而http1.0不支持长连接,所以这里指定了协议版本

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

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

相关文章

相对路径、绝对路径和特殊路径符

目录 相对路径概念: 绝对路径概念: 特殊路径符.概念作用 .\.概念作用 ~概念作用 总结 相对路径 概念: 文件/文件夹相对于当前所处的工作目录的路径。如下图: 如何描述用户工作目录下的 hello2.txt 的相对路径呢? 由…

电脑完全重装教程——原版系统镜像安装

注意事项 本教程会清除所有个人文件 请谨慎操作 请谨慎操作 请谨慎操作 前言 本教程是以系统安装U盘为介质进行系统重装操作,照着流程操作会清除整个硬盘里的文件,请考虑清楚哦~ 有些小伙伴可能随便在百度上找个WinPE作为启动盘就直接…

c++11特新:弱引用智能指针

弱引用智能指针std::weak_ptr可以看做是shared_ptr的助手,它不管理shared_ptr内部的指针。std::weak_ptr没有重载操作符*和->,因为它不共享指针,不能操作资源,所以它的构造不会增加引用计数,析构也不会减少引用计数…

docker部署mysql主主备份 haproxy代理(swarm)

docker部署mysql主主备份 haproxy代理(swarm) docker部署mysql主主备份 docker部署mysql主主备份(keepalived)跨主机自动切换 docker部署mysql主主备份 haproxy代理(swarm) 1. 环境准备 主机IPnode119…

CSS3多列分页属性

CSS3多列 Firefox浏览器支持该属性的形式是-moz-column-count,而基于Webkit的浏览器,例如Safari和Chrome,支持该属性的形式是-webkit-column-count column-count:该属性定义多列文本流中的栏数 语法:column-count:int…

UG阵列特征

阵列特征:将一个或多个特征,沿线性方向阵列复制图形 实体建模时建议草图尽可能简单,能特征阵列的别草图阵列 阵列特征命令在如下位置:菜单-插入-关联复制-阵列特征 当我们只需要选中的特征沿着一个或两个方向进行阵列的时候&…

如何快速实现地源热泵远程监控

地源热泵远程监控解决方案 一、项目背景 山东省潍坊市盛世花园小区地源热泵项目是一个先进的供暖与制冷系统,旨在为整个小区提供高效且节能的温控服务。该系统主要由地下管道网络、地源热泵单元以及室内分配系统组成。 针对现有的地源热泵系统的管理和监控问题&a…

安装 PyCharm 2021.1 保姆级教程

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 目前能下载到的最新版本是 PyCharm 2021.1。 请注意对应 Python 的版本&#xff1a; Python 2: 2.7Python 3: >3.6, <3.11…

【AivaAI】做音乐,无人能比它更专业

关于Aiva Aiva AIVA是音乐制作初创公司AIVA Technologies打造的一款人工智能产品。是人工智能领域头款获得国际认证的虚拟作曲家。 Aiva登录 可以选择Google登录&#xff0c;或者其他邮箱登录。 输入用户名&#xff0c;登录完成。 开始制作音乐 在主页选择“创建曲目…

【Pika Labs】图片想法转视频-使用教程

关于Pika Labs 通过Pika Labs&#xff0c;可将你的想法转化为视频&#xff0c;将您的创造力付诸实践。 链接: Pika 登录Pika Labs 你可以通过Pika官方主页链接: Pika或者是Diacord社区邀请链接Discord Pika 进入Pika 社区。 接受邀请&#xff0c;按需回答完例行提问&#…

DRF之引入

目录 一、web应用模式 【1】前后端混合开发 【2】前后端分离 二、API接口 三、接口测试工具&#xff1a;Postman 四、RESTful API规范 【1】什么是RESTful 【2】RESTful API的规范 2.1 数据的安全保障 2.2 接口特征表现 2.3 多数据版本共存 2.4 数据即是资源&#…

nn.LSTM个人记录

简介 nn.LSTM参数 torch.nn.lstm(input_size, "输入的嵌入向量维度&#xff0c;例如每个单词用50维向量表示&#xff0c;input_size就是50"hidden_size, "隐藏层节点数量,也是输出的嵌入向量维度"num_layers, "lstm 隐层的层数&#xff0c;默认…