Nginx 的这些妙用,你都 get 到了吗?( 二 )


Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
为什么使用反向代理,原因如下:
  • 保护和隐藏原始资源服务器
  • 加密和 SSL 加速
  • 通过缓存静态资源,加速 Web 请求
  • 实现负载均衡
负载均衡:TODO: 留一个负载均衡详细介绍传送门 。地址重定向:Nginx 的 Rewrite 主要的功能就是实现 URL 重写,比如输入 360.com 跳转到了 360.cn,baidu.cn 跳转到了 baidu.com 。动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力 。
这里指的就是让动态程序(Java、PHP)去访问应用服务器,让缓存、图片、JS、css 等去访问 Nginx 。
Nginx 安装
①下载Nginx:
wgethttp://nginx.org/download/nginx-1.16.1.tar.gz②安装需要编译的插件:
  • 用于编译 C、C++ 代码的 GCC 。
  • 用 C 语言编写的正则表达式函数库 Pcre(使用 Rewrite 模块) 。
  • 用于数据压缩的函式库的 Zlib 。
  • 安全套接字层密码库 OpenSSL(启用 SSL 支持) 。
yuminstallgccc++yuminstall-ypcrepcre-develyuminstall-yzlibzlib-develyuminstall-yopensslopenssl-devel③解压、配置(Nginx 支持各种配置选项 )、编译、安装 Nginx:
tar-zxvfnginx-1.15.tar.gzcdnginx-1.16.1cdnginx-1.16.1./configuremake&&sudomakeinstall④启动、重启、关闭:
cd/usr/local/nginx/cdsbin./nginx#关闭命令./nginx-sstop#重启,热部署./nginx-sreload#修改配置文件后也别嘚瑟,反正我会动不动就写错,检查修改的nginx.conf配置是否正确./nginx-t
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
⑤验证(浏览器输入 IP):
Nginx 的这些妙用,你都 get 到了吗?

文章插图
 
配置文件
nginx.conf 配置文件主要分为三部分:
  • 全局块
  • Events 块
  • HTTPS 块
Nginx 配置语法:
  • 配置文件由指令和指令块构成
  • 每条指令以分号(;)结尾,指令和参数间以空格符分隔
  • 指令块以大括号{}将多条指令组织在一起
  • include 语句允许组合多个配置文件以提高可维护性
  • 使用 # 添加注释
  • 使用 $ 定义变量
  • 部分指令的参数支持正则表达式
全局块
全局配置部分用来配置对整个 Server 都有效的参数 。主要会设置一些影响 Nginx 服务器整体运行的配置指令,包括配置运行 Nginx 服务器的用户(组)、允许生成的 Worker Process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等 。
示例如下:
usernobody;worker_processes4;error_log/data/nginx/logs/error.lognotice;Events 块
Events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 Work Process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word Process 可以同时支持的最大连接数等 。
events{#每个workprocess支持的最大连接数为1024.worker_connections1024;}HTTP 块
这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里 。需要注意的是:HTTP 块也可以包括 HTTP 全局块、Server 块 。
①HTTP 全局块HTTP 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等 。
http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;②Server 块这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本 。
每个 HTTP 块可以包括多个 Server 块,而每个 Server 块就相当于一个虚拟主机 。
而每个 Server 块也分为全局 Server 块,以及可以同时包含多个 Locaton 块 。
全局 Server 块:也被叫做“虚拟服务器”部分,它描述的是一组根据不同server_name指令逻辑分割的资源,这些虚拟服务器响应 HTTP 请求,因此都包含在 HTTP 部分 。
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置 。
server{listen80;#server_name也支持通配符,*.example.com、www.example.*、.example.comserver_namelocalhost;#charsetkoi8-r;#access_loglogs/host.access.logmain;Location 块:一个 Server 块可以配置多个 Location 块 。


推荐阅读