Nginx系列之 一 入门

这篇具有很好参考价值的文章主要介绍了Nginx系列之 一 入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

目录

一、Nginx概述

二、yum安装

三、nginx.conf配置文件详解

3.1 全局块

3.2 events 块

3.3 HTTP 块

四、Nginx 常用命令

五、Nginx代理

4.1 正向代理

4.2 反向代理

六、Nginx的Master-Worker模式

6.1 Master进程的作用是?

6.2 Worker进程的作用是?

6.3 Nginx如何做到热部署?


一、Nginx概述


Nginx系列之 一 反向代理_开着拖拉机回家的博客-CSDN博客

Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,在互联网项目中广泛应用。

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

Nginx 专为性能优化而开发,性能是其最重要的要求,十分注重效率,有报告 Nginx 能支持高达 50000 个并发连接数。

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

上图基本上说明了当下流行的技术架构,其中Nginx有点入口网关的味道。


二、yum安装


添加nginx到yum源

sudo rpm -Uvh  http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm


[root@hdp105 ~]# cat  /etc/yum.repos.d/nginx.repo 
# nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

repo 源地址添加成功

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

安装nginx

# 安装
sudo yum install -y nginx

# 启动
sudo systemctl start nginx

# 开机自启动
sudo systemctl enable nginx

# 查看启动状态
sudo systemctl status  nginx
# 查看日志
tail  -100f    /var/log/nginx/error.log

启动状态为active

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

成功访问

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

三、nginx.conf配置文件详解


如下是使用yum安装后默认的配置文件

cat  /etc/nginx/nginx.conf 

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

3.1 全局块


从配置文件开始到 events 块之间,主要是设置一些影响 Nginx 服务器整体运行的配置指令。

并发处理服务的配置,值越大,可以支持的并发处理量越多,但是会受到硬件、软件等设备的制约。

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

  • user :指定Nginx Worker进程运行用户以及用户组,默认由nginx账号运行。
  • worker_processes: 指定了Nginx要开启的子进程数。每个Nginx进程平均耗费10M~12M内存。这里默认为 auto, 自动参数可以自动检测 cpu cores 并设置 worker_processes 参数 ,如下图。
  • error_log:用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
  • pid: 指定进程id的存储文件位置。
Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

3.2 events 块


影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 workprocess 下的网络连接进行序列化,是否允许同时接收多个网络连接等等。

支持的最大连接数:

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

worker_connections : 定义Nginx每个进程的最大连接数,即接收前端的最大请求数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,即Max_clients=worker_processes*worker_connections,如:8*1024=8092。在作为反向代理时,Max_clients变为:Max_clients = worker_processes * worker_connections/4(官方建议)。 进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。

3.3 HTTP 块


诸如反向代理和负载均衡都在此配置。

http      # http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}
  • http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • location块:配置请求的路由,以及各种页面的处理情况。
location[ = | ~ | ~* | ^~] url{

}

location 指令说明,该语法用来匹配 url,语法如上:

  • =:用于不含正则表达式的 url 前,要求字符串与 url 严格匹配,匹配成功就停止向下搜索并处理请求。
  • ~:用于表示 url 包含正则表达式,并且区分大小写。
  • ~*:用于表示 url 包含正则表达式,并且不区分大小写。
  • ^~:用于不含正则表达式的 url 前,要求 Nginx 服务器找到表示 url 和字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再匹配。
  • 如果有 url 包含正则表达式,不需要有 ~ 开头标识。

四、Nginx 常用命令


输入nginx -help 可以查看参数基本使用

[root@hdp105 conf]# nginx -help
nginx version: nginx/1.24.0
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
             [-e filename] [-c filename] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /etc/nginx/)
  -e filename   : set error log file (default: /var/log/nginx/error.log)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file

使用

# 查看版本
nginx -v

# 重新加载 Nginx 配置
nginx -s reload

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装


五、Nginx代理


5.1 正向代理


由于防火墙的原因,我们并不能直接访问谷歌,那么我们可以借助VPN来实现,这就是一个简单的正向代理的例子。这里你能够发现,正向代理“代理”的是客户端,而且客户端是知道目标的,而目标是不知道客户端是通过VPN访问的。

当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的反向代理,即反向代理“代理”的是服务器端,而且这一个过程对于客户端而言是透明的。

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

4.2 反向代理


反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

六、Nginx的Master-Worker模式


启动Nginx后,其实就是在80端口启动了Socket服务进行监听,如图所示,Nginx涉及Master进程和Worker进程。

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

Master-Worker模式

6.1 Master进程的作用是?


读取并验证配置文件nginx.conf;管理worker进程;

6.2 Worker进程的作用是?


每一个Worker进程都维护一个线程(避免线程切换),处理连接和请求;注意Worker进程的个数由配置文件决定,一般和CPU个数相关(有利于进程切换),配置几个就有几个Worker进程。

6.3 Nginx如何做到热部署?


所谓热部署,就是配置文件nginx.conf修改后,不需要stop Nginx,不需要中断请求,就能让配置文件生效!(nginx -s reload 重新加载 ; nginx -t 检查配置)

通过上文我们已经知道worker进程负责处理具体的请求,那么如果想达到热部署的效果,可以想象:

方案一:

修改配置文件nginx.conf后,主进程master负责推送给woker进程更新配置信息,woker进程收到信息后,更新进程内部的线程信息。(有点valatile的味道)

方案二:

修改配置文件nginx.conf后,重新生成新的worker进程,当然会以新的配置进行处理请求,而且新的请求必须都交给新的worker进程,至于老的worker进程,等把那些以前的请求处理完毕后,kill掉即可。

Nginx采用的就是方案二来达到热部署的!


Nginx系列之 一 入门,Linux,nginx,Master-Worker模式,反向代理,负载均衡,nginx安装

 

参考文章:

nginx配置详解_nginx 配置详解_yshir-phper的博客-CSDN博客

https://www.cnblogs.com/ysocean/p/9392908.html

8分钟带你深入浅出搞懂Nginx - 知乎

神器 Nginx 的学习手册 ( 建议收藏 )文章来源地址https://www.toymoban.com/news/detail-551167.html

到了这里,关于Nginx系列之 一 入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式 - 服务器Nginx:一小时入门系列之 return 指令

    1. return 指令语法 return指令用于立即停止当前请求的处理,并返回指定的HTTP状态码和响应头信息,它可以用于在Nginx中生成自定义错误页面,或者在Nginx中重定向到另一个URL,它的语法如下: 其中,code 是 HTTP 状态码,可以是 2xx、3xx、4xx 或 5xx 等。text 是可选的文本信息,用于

    2024年02月11日
    浏览(34)
  • 分布式 - 服务器Nginx:一小时入门系列之HTTP反向代理

    1. 正向代理和反向代理 正向代理是 客户端 通过代理服务器访问互联网资源的方式。在这种情况下,客户端向代理服务器发送请求,代理服务器再向互联网上的服务器发送请求,获取资源并返回给客户端。正向代理的典型应用场景是翻墙,即通过代理服务器访问被封锁的网站

    2024年02月14日
    浏览(44)
  • 分布式 - 服务器Nginx:一小时入门系列之HTTPS协议配置

    1. HTTPS 协议 HTTPS 是一种通过计算机网络进行安全通信的协议。它是HTTP的安全版本,通过使用 SSL 或 TLS 协议来加密和保护数据传输。HTTPS的主要目的是确保在客户端和服务器之间传输的数据是加密的,以防止第三方窃听、篡改或伪装。它通过使用公钥加密和私钥解密的方式来

    2024年02月11日
    浏览(43)
  • 分布式 - 服务器Nginx:一小时入门系列之代理缓冲与缓存

    官方文档:https://nginx.org/en/docs/http/ngx_http_proxy_module.html 代理缓冲用于临时存储从后端服务器返回的响应数据。通过使用代理缓冲,Nginx可以在接收完整的响应后再将其发送给客户端,从而提高性能和效率。 ① 客户端往往是用户网络,情况复杂,可能出现网络不稳定,速度较

    2024年02月11日
    浏览(35)
  • 分布式 - 服务器Nginx:一小时入门系列之 HTTPS协议配置

    1. HTTPS 协议 HTTPS 是一种通过计算机网络进行安全通信的协议。它是HTTP的安全版本,通过使用 SSL 或 TLS 协议来加密和保护数据传输。HTTPS的主要目的是确保在客户端和服务器之间传输的数据是加密的,以防止第三方窃听、篡改或伪装。它通过使用公钥加密和私钥解密的方式来

    2024年02月11日
    浏览(41)
  • 分布式 - 服务器Nginx:一小时入门系列之TCP反向代理和负载均衡

    1. HTTP反向代理和TCP反向代理 Nginx可以作为HTTP反向代理和TCP反向代理。 HTTP反向代理是指Nginx作为Web服务器的代理服务器,接收客户端的HTTP请求,然后将请求转发给后端的Web服务器,最后将Web服务器的响应返回给客户端。这种方式可以实现负载均衡、缓存、SSL终止等功能。 T

    2024年02月11日
    浏览(41)
  • CentOS系列:【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)

    本次的实验环境见下表: 操作系统 服务器IP hostname centos7.6 192.168.1.41 mufengrow41 如何查看相应的参数: 查看操作系统: 查看ip 2.1 添加yum源 nginx不在的默认的yum源中, 可以使用epel或者官网提供的yum源来安装。 以下两种方法,选择任意一种即可,也就是2.1.1和2.1.2两个小节的内

    2024年04月15日
    浏览(48)
  • 使用Akka的Actor模拟Spark的Master和Worker工作机制

    在 Apache Spark 中,Master 和 Worker 之间通过心跳机制进行通信和保持活动状态。下面是 Master 和 Worker 之间心跳机制的工作流程: Worker 启动后,会向预先配置的 Master 节点发送注册请求。 Master 接收到注册请求后,会为该 Worker 创建一个唯一的标识符(Worker ID)并将其信息保存在

    2024年02月09日
    浏览(29)
  • kubeSphere / k8s中master、worker节点启停命令操作

    在实际工作中,可能某个Master节点或者worker节点需要维护,迁移,我们需要平滑的停止、启动该节点,尽量减少启停中对集群造成的影响。 操作前,请确保集群资源充足! 下面以master节点进行讲解 登录KubeSphere 备份数据

    2024年02月11日
    浏览(24)
  • kubernetes(K8S)学习(一):K8S集群搭建(1 master 2 worker)

    kubernetes官网 :https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl GitHub :https://github.com/kubernetes/kubeadm 本文 :使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点。 由于k8s安装较麻烦,为防止出现其他异常,特此

    2024年04月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包