nginx系列1-nginx作用

本文深入解析Nginx作为高性能HTTP和反向代理服务器的特点,包括其在微服务、负载均衡和动静分离中的应用,以及正向与反向代理的区别。探讨了Nginx的主进程与工作进程机制,介绍了配置文件结构和日志管理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是nginx

nginx是一个常见的http和反向代理服务器,之所以流行是它可以在支持50000个高并发连接下,系统的CPU、内存消耗很低,运行很稳定。

2.nginx作用

(1)路由功能
可以根据访问的域名选择后台服务器,比如用在微服务领域
(2)负载均衡
在高并发下,利用负载均衡选择服务器,降低服务端压力,增大并发量
(3)动静分离
充当静态服务器,比如html文件,比tomcat性能高很多

3.正向代理和反向代理

(1)正向代理
正向代理是客户端明确知道要访问的是目标是谁,但无法直接访问,所以客户端找了个代理服务器,让代理服务器去转发访问。比如我们常见的翻墙软件。
正向代理中,客户端是知道自己要访问请求是由代理服务器转发的,服务端只知道请求是代理服务器发起的,不知道正在发起的是客户端。
(2)反向代理
反向代理比较常见的就是负载均衡。客户端实际上不知道自己访问的是个代理服务器,也不知道访问的是服务器集群中具体的哪一台服务器。是由nginx通过具体的算法将请求转发到一台具体的服务器,比如轮询。

4.nginx主进程和工作进程

nginx工作包含一个主进程(master)和N个worker进程。配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间通信。主进程以root用户运行,而worker、 cache loader和cache manager均应以非特权用户身份运行。
(1)主进程
主进程负责读取验证配置信息,可以提供无需终止服务,重新加载配置;监控worker进程状态,监控,启动停止worker进程。当有worker进程进程退出,重新启动一个worker进程替代;重新打开配置文件;创建、绑定及关闭套接字;接收来自外界的信号
(2)工作进程
接收、传入并处理来自客户端的连接;提供反向代理及过滤功能;nginx任何能完成的其它任务

5.nginx目录结构

nginx安装完成后,主要有4个目录

  • conf:配置文件
  • html:静态文件
  • logs:日志文件
  • sbin:二进制文件

5.1 nginx.conf

配置文件结构
在这里插入图片描述

#user  nobody;  #主模块命令, 指定Nginx的worker进程运行用户以及用户组,默认由nobody账号运行。
worker_processes  1;                // worker进程的数量
worker_rlimit_nofile 100000;  #worker进程的最大打开文件数限制
#error_log  logs/error.log;//用来定义全局错设日志文件的路径和日志名称。
//日志输出级别有debug,info,notice,warn,error,crit 可供选择,其中debug输出日志最为详细,面crit(严重)输出日志最少。默认是error
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;//用来指定进程id的存储文件位置。
events {    			   //事件区块开始
	use epoll;             //nginx的工作模式            
    worker_connections  1024;           //每个worker进程支持的最大连接数
}                                    //事件区块结束
http {                               // HTTP区块开始
    include       mime.types;            //对配置文件所包含文件的设定,减少主配置文件的复杂度,相当于把部分设置放在别的地方,然后在包含进来
    default_type  application/octet-stream;     // 默认的媒体类型
    sendfile        on;       //开启高效传输模式
    keepalive_timeout  65;       //连接超时    
	#gzip  on;             设置是否开启gzip模块
	#access_log  logs/access.log  main;//默认使用“main”日志格式,也可以自定义格式。
    server {            //第一个Server区块开始,表示一个独立的虚拟主机站点
        listen       80;      // 提供服务的端口,默认80
        server_name  localhost;       //提供服务的域名主机名
        location / {            //第一个location区块开始,地址匹配设置,支持正则匹配,也支持条件匹配,这里是默认请求地址,用户可以location命令对nginx进行动态和静态网页过滤处理
            root   html;       //站点的根目录,相当于Nginx的安装目录
            index  index.html index.htm;      // 默认的首页文件,多个用空格分开
        }          //第一个location区块结果
        error_page   500502503504  /50x.html;     // 出现对应的http状态码时,使用50x.html回应客户
        location = /50x.html {          //location区块开始,访问50x.html
            root   html;      // 指定对应的站点目录为html
        }
    }

5.2 日志文件内容

在这里插入图片描述
日志切割:

#编写logcut/sh:
#!/bin/bash
#设置日志文件存放目录
LOG_HOME="/usr/local/nginx/logs/"
#备分文件名称
LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)"
#重命名日志文件
mv ${LOG_HOME}/access.log ${LOG_HOME}/access.${LOG_PATH_BAK}.log
mv ${LOG_HOME}/error.log ${LOG_HOME}/error.${LOG_PATH_BAK}.log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${LOG_HOME}/nginx.pid`

定时任务
配置linux的cron,crontab文件格式:minute hour day month week command
比如:*/1 * * * * /usr/local/nginx/sbin/logcut.sh
开启定时任务:
/etc/rc.d/init.d/crond start #定时任务开启
注意
/etc/init.d/rsyslog start #系统日志,如不开启,看不到定时任务日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值