nginx:原理(1)

发布时间 2023-11-29 15:00:25作者: ShineLe

学习自:Nginx教程(小白必看,看了必会,不看血亏),-CSDN博客

深入理解 http 反向代理(nginx) - 知乎

《nginx经典教程》

0、nginx指令

nginx -s stop:快速关闭ng,并终止web服务,可能不会保存相关信息。

nginx -s quit:平稳关闭ng,有安排地结束web服务,有安排地结束web服务。

nginx -s reload:重载配置文件

nginx -s reopen:重启日志文件

nginx -c filename:为ng指定一个新conf文件,而非使用默认conf。

nginx -t:不运行ng,只是检测conf文件(语法正确性、某些文件能否打开)。

nginx -v:ng版本

nginx -V:ng版本、编译器版本、配置参数

1、nginx基本概念

1)简介

nginx是一个反向代理服务器,具有强并发、少内存占用的优点。

2)代理:C端和S端中间的一个服务器,可以代表任何一端去获取另一端的网络信息,避免该端直接访问另一端。

①正向代理

C端通过代理访问某个具体的S端,此时S端不知道真实的C端地址

常见应用:VPN

②反向代理

S端通过代理接收C端请求,再将请求转发到内网中的具体服务器上,再将该服务器上的得到的结果返回给C端。此时C端不知道哪台S是真正提供服务的S端,而是由代理服务器根据路由规则转发到相应的原始服务器。

反向代理中,用户访问的是代理IP(nginx服务器),而非最终的S端IP

常见应用:nginx。

不论正向代理还是反向代理,后端的服务器一般都看不到初始请求发起的IP,通常该项会通过一定策略保存在HTTP请求头中。 

③区别

用户设置

  • 正向代理需要我们主动设置服务器IP域名进行访问,返回的访问内容也是这些服务器上的;

反向代理对用户没有任何设置要求,也是访问服务器的IP或域名,但是服务器会自动根据访问内容进行跳转+内容返回最终访问的服务器是未知的。

代理对象

  • 正向代理——为C端做代理,帮助C端访问其无法访问的S端资源;
  • 反向代理——为S端做代理,帮助S端做负载均衡、安全防护。

可见性

  • 正向代理——为C端做代理,为C端收发请求,使S端看不到真实的C端;
  • 反向代理——为S端做代理,为S端收发请求,使C端看不到真实的S端;

网段

  • 正向代理——Proxy和C端位于同一个LAN,对S端透明;
  • 反向代理——Proxy与S端位于同一个LAN,对C端透明。

3)nginx功能

①反向代理

②负载均衡

nginx通过它的http块下的upstream块实现负载均衡。

 

单个Web服务器不能承载日益增长的并发请求量,因此我们需要不断扩张Web应用服务器来支持更高的并发请求,并将请求均匀分配到各个应用服务器上,此为负载均衡

nginx提供的负载均衡策略有2种:内置、扩展

内置:一些内置的负载均衡策略——轮询、加权轮询、IP hash。

扩展:根据需要自己写负载均衡算法并实现。

③动静分离

为了加快网站解析速度,将动态页面、静态页面交给不同服务器来解析,加快解析速度,降低单个服务器的压力。

Nginx的静态处理能力很强,但是动态处理能力不足,因此实际应用中常用动静分离技术。对于静态资源图片、JS、CSS等文件,可以放在nginx服务器中缓存。这样浏览器在请求一个静态资源时,nginx就可以直接处理,无需将请求转发给后端服务器tomcat。

对于动态资源,比如servlet,jsp则转发给Tomcat服务器处理,从而实现动静分离

例如,将静态文件放在一个单独的Web服务器上。

 

2、nginx源码结构

从nginx官网下载的nginx.tar.gz压缩包,解压后(此时还未编译安装)的nginx目录下有如下文件目录:

 布局是从上往下、从左往右、先大写后小写的形式。

部分常用文件及目录的功能(nginx经典教程 12页):

  • auto:安装过程中配置环境所用到的自动化脚本
  • CHANGES:版本历史及更新纪要
  • CHANGES.ru:俄文版版本历史
  • conf:配置目录
  • configure编译过程的总驱动
  • contrib:必要的功能脚本或可导入配置
  • html默认页面(index.html)和错误页面(50x.html)所在目录
  • logs:日志目录
  • sbin:nginx命令目录(启停nginx)
  • src:源码目录

一些常用目录及文件的具体说明

auto

存放一些自动化脚本,用于实现nginx自动化安装、环境配置

configure

编译nginx的自动化配置脚本,是编译过程的总驱动,该脚本运行完毕会生成部分C代码同时生成Makefile文件

conf

存放nginx的配置文件,这些文件在安装之后会被复制到目录/usr/local/nginx/conf目录下。

配置文件以conf结尾,有的文件以.default结尾,代表备份,方便恢复初始状态

该目录下的文件有5种类型:

fastcgi*:包含FastCGI相关参数的配置;

mime.types:媒体类型的文件;

nginx.conf:NGINX默认主配置文件;

scgi_params:包含SCGI相关参数的配置;

uwsgi_params:包含uWSGI相关参数的配置。

其中FastCGI、SCGI、uWSGI具有结合外部应用的能力

关于nginx.conf的详细说明,见nginx:配置文件(nginx.conf)各项说明 - ShineLe - 博客园

conf文件中以default为后缀的文件代表备份文件,方便恢复刚安装好nginx时这些文件的初始配置

html:默认的站点目录——首页、错误页面

logs:日志

sbin:nginx服务命令——重启、关闭、启动、状态

src:NGINX的源码目录