02Nginx配置文件的配置以及常用命令

2023-09-20 09:02:00

Nginx的命令和配置文件

Nginx的优点

Nginx的优点

  • 跨平台: Nginx可以在大多数操作系统中运行,而且也有Windows的移植版本
  • 配置简单: 配置风格跟程序开发一样
  • 非阻塞、高并发: 数据复制时磁盘I/O的第一阶段是非阻塞的,在实际生产环境中跑到2-3万并发连接数(这得益于Nginx使用了最新的epoll模型)
  • 事件驱动: 由于通信机制采用epoll模式所以支持更大的并发连接数
  • 内存消耗小: 处理大并发的请求内存消耗非常小,如在3万并发连接下开启的10个Nginx进程才消耗150M内存
  • 成本低廉: Nginx作为开源软件可以免费试用,而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
  • 内置健康检查功能: 即使Nginx Proxy后端的某台Web服务器宕机了也不会影响前端访问
  • 节省带宽: 支持GZIP压缩并且可以添加浏览器本地缓存的Header头
  • 稳定性高: 使用反向代理的方式宕机的概率微乎其微

Nginx常用命令

Nginx的命令需要在sbin目录下才能执行,也可以将Nginx的二进制文件配置到环境变量中这样就可以在任何目录下都能执行

# 编辑配置文件并使其生效:vim /etc/profile和source /etc/profile
ecport PATH=$JAVA_HOME/bin:$PATH
PATH=/usr/local/nginx/sbin:$JAVA_HOME/bin:$PATH
命令功能
./nginx -v查看nginx的版本
./nginx -t检查配置文件正确性(如果有错误会报错并且会记录日志)
./nginx启动nginx,启动服务后浏览器输入本机的ip地址就可以访问Nginx的默认页面(需要设置防火墙对80端口放行)
./nginx -s stop停止nginx
./nginx -s reload当修改Nginx配置文件后需要重新加载才能生效
# 查看nginx的版本
[root@localhost sbin]./nginx -v
nginx version: nginx/1.22.1

# 检查配置文件正确性
[root@localhost sbin] ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

# 启动nginx服务(出现master与worker进程)
[root@localhost sbin]./nginx 
[root@localhost sbin]ps -ef | grep nginx
root      89623      1  0 22:08 ?        00:00:00 nginx: master process ./nginx
nobody    89624  89623  0 22:08 ?        00:00:00 nginx: worker process
root      89921   1696  0 22:08 pts/0    00:00:00 grep --color=auto nginx

# 停止Nginx服务
[root@localhost sbin]./nginx -s stop
[root@localhost sbin]ps -ef | grep nginx
root      93772   1696  0 22:11 pts/0    00:00:00 grep --color=auto nginx # grep命令的进程

Nginx配置文件

Nginx配置文件(conf/nginx.conf)整体分为全局块,events块,http块三部分,其中http块又分为http全局块和多个server块,server块分为server全局块和多个locaton块

  • 全局块: 从配置文件开始到events块之间的内容,设置一些影响nginx服务器整体运行的全局配置指令
  • events块: Nginx服务器与用户的网络连接的配置
  • http块: 代理,缓存,日志记录,虚拟主机配置,第三方模块的配置等
  • http全局块: 配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等
  • server块: 每个server块就相当于一个虚拟主机
  • server全局块: 配置本虚拟机主机的监听配置和本虚拟主机的名称或IP
  • locaton块:基于Nginx服务器接收到的请求字符串(uri)匹配对应location块处理请求或地址定向等,此外还有数据缓存和应答控制等功能
属性名功能
worker_processes设置Nginx服务器支持的并发处理量
worker_connections设置每个work_process支持的最大连接数
listen设置监听的虚拟机端口号
server_name设置监听的虚拟机IP地址
root指定静态资源的根目录,默认当前目录是配置文件所在的目录(配置文件和html目录同级)
index设置监听端口的首页(可以有多个,中间用空格隔开),默认当前目录是使用root指令指定的根目录
proxy_pass设置反向代理的服务器ip地址和端口号或者一组服务器

location [=|~|~*|^~] uri指令根据请求是否包含指定的uri匹配对应location块处理请求,uri前缀就是server_name:listen如localhost:80

  • 如果uri包含正则表达式,则必须要有 ~ 或者 ~ *标识,=和^~都是用于不含正则表达式的uri前
  • = : 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功就停止继续向下搜索并立即处理该请求
  • ~: 用于表示包含正则表达式的uri,并且区分大小写
  • ~*: 用于表示包含正则表达式的uri,但是不区分大小写
  • ^~: 要求Nginx服务器找到标识uri和请求字符串匹配度最高的location后立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配

location块对于匹配的url如何处理进行转发

  • 对于没有使用正则表达式的请求路径如/api则直接将/api及后面的路径拼接到代理的服务器后(找处理请求的方法)或静态资源的根目录后(找对应的静态文件)
  • 如果使用了正则表示式的请求路径如~ /api/会将/api/以及后面的路径拼接到代理的服务器(找处理请求的方法)或静态资源的根目录(找对应的静态文件)
#全局快主要包括配置运行Nginx服务器的用户(组),允许生成的worker process数,进程PID存放路径,日志存放路径和类型以及配置文件的引入等

#Nginx服务器支持的并发处理量,值越大可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约 
worker_processes  1;                              <-- 全局块(events块之前的配置都是全局块)


#events块常用的设置包括是否开启对多work process下的网络连接进行序列化
#是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个word_process可以同时支持的最大连接数等
events {                                          <-- events块
    # 每个work_process支持的最大连接数,这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置
    worker_connections  1024;  
}  

# http块是Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里
http {                                            <-- http块
    # http全局块配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等
    include       mime.types;                     <-- http全局块(server块之前的配置都是全局块)
    default_type  application/octet-stream;  
    sendfile        on;  
    keepalive_timeout  65;  
  	# 每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机
    server {                                      <-- Server块
    	# server全局块: 配置本虚拟机主机的监听配置和本虚拟主机的名称或IP
        listen       80;                          <-- Server全局块(location块之外 的配置都是全局块)
        server_name  localhost;  
        # location块用来匹配客户端请求的url,匹配到后去根目录找对应的文件
        location / {                              <-- location块
        	# 指定静态资源的根目录,默认当前目录是配置文件所在的目录(配置文件和html目录同级)
            root   html;
            # 指定首页,默认当前目录是使用root指令指定的根目录
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
更多推荐

【JavaScript】深拷贝和浅拷贝

在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是两种不同的对象复制方法,它们涉及到如何复制对象的属性以及如何处理对象内部的嵌套引用。以下是它们的解释:浅拷贝(ShallowCopy):浅拷贝是一种对象复制方法,它仅复制对象的一层属性,而不会递归复制对象内部的嵌套对象。当你进行浅拷

小谈设计模式(4)—单一职责原则

小谈设计模式(4)—单一职责原则专栏介绍专栏地址专栏介绍单一职责原则核心思想职责的划分单一变化原则高内聚性低耦合性核心总结举例图书类(Book)用户类(User)图书管理类(Library)分析不遵守单一职责原则,可能引发的问题类的职责不清晰类的修改影响范围过大难以重用和扩展Java代码实现程序分析总结专栏介绍专栏地址

Linux简介和比较:开源操作系统的优势与差异

文章目录第1章:Linux简介和基础知识Linux是什么以及它的历史Linux发行版介绍Linux基本命令行操作Linux和Dos操作系统的比较1.发展历史和用途2.内核和源代码3.用户界面和用户体验4.功能和应用程序5.硬件兼容性6.支持和社区Linux和Windows操作系统的比较1.开源vs.闭源2.费用3.用户

在openSUSE-Leap-15.5-DVD-x86_64中使用钉钉dingtalk_7.0.40.30829_amd64

在openSUSE-Leap-15.5-DVD-x86_64中使用钉钉dingtalk_7.0.40.30829_amd64一、到官网下载钉钉Linux客户端https://page.dingtalk.com/wow/z/dingtalk/simple/ddhomedownload#/localhost:~#ls-lh

利用PPT导出一张高清图的方法,office与WPS只需要使用一个即可,我使用的是office。

利用PPT导出一张高清图的方法,office与WPS只需要使用一个即可,我使用的是office。1,PPT的功能拓展来解决导出高清图片方法1.1,PPT功能拓展—>安装插件:2,各种方法导出图片效果显示:2.1,原始图片2.2,PPT直接导出,看效果,字迹有些模糊。dpi:962.3,PA导出高清,还差点意思。dpi:

Nacos使用教程(五)——配置管理中心

文章目录一、前言二、为什么nacos要有配置管理的功能?三、nacos的动态配置功能1.实时更新:2.多环境支持:3.监听机制:4.版本管理:5.灰度发布:6.安全权限控制:四、安装和配置Nacos1.下载和安装2.配置Nacos五、使用Nacos作为配置中心1.创建命名空间和配置分组2.编写配置文件3.注册配置到Na

在适用于 Linux 的 Windows 子系统上安装 React

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录必备条件安装React将React添加到现有的Web应用本指南介绍如何使用create-react-app工具链在适用于Linux的Windows子系统(WSL)上运行的Linux分发版(如Ubuntu)上安装

聊聊交互设计师的成长 优漫动游

1.交互设计师应当具备的能力聊聊交互设计师的成长如果我们简单的将用户体验领域涉及到的技能分为:用户研究、产品(概念/功能)设计、交互设计、视觉设计、工程技术,我认为任何一个交互设计师和视觉设计师等等,都应该具有整体的复合技能,只是哪部分更多哪部分更少的问题。1)用户研究:对于交互设计师,不具备基本的用户研究能力,无法吸

AMS爆炸来袭,上线即巅峰

1.关于首发项目Antmons(AMS)空投结果Gate.ioStartup首发项目Antmons代币AMS于Aug15th,AM07:00开始下单,24小时内下单同等对待总共有15,950人下单,下单总价值超过1,000万美金分发系数约为0.001640495298341。根据上线规则AMS项目认购成功,Gate.i

跨进程数据共享技术

跨进程数据共享技术是指在不同的计算进程之间实现数据共享的方法和技术。这种技术通常用于多任务操作系统或分布式系统中,以便不同的程序或进程能够在运行时共享数据,从而实现协同工作或实现某些特定的功能。以下是一些常见的跨进程数据共享技术:进程间通信(Inter-ProcessCommunication,IPC):IPC是一种广

SpringBoot+Jpa+Thymeleaf实现增删改查

SpringBoot+Jpa+Thymeleaf实现增删改查这篇文章介绍如何使用Jpa和Thymeleaf做一个增删改查的示例。1、pom依赖pom包里面添加Jpa和Thymeleaf的相关包引用<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://mave

热文推荐