学习自:Nginx教程(小白必看,看了必会,不看血亏),-CSDN博客
《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的源码目录