编辑
2022-06-25
Application
00
请注意,本文编写于 863 天前,最后修改于 417 天前,其中某些信息可能已经过时。

目录

一、Nginx概述
二、Nginx构成,安装以及配置文件
三、配置upstream
四、日志可视化工具-Go Access
五、其他补充
A. Nginx命令行
B. 单位相关
六、参考文档

终于要开始记录NGIINX这个系列的主题了,MySQL准备再拖一拖,先把nginx这个过一遍。Nginx是一种高性能的Web服务器,起主要作用有三个:处理静态资源,反向代理(缓存&负载均衡)以及API服务(OpenResty)。当前网络上Web服务器很多,比如最老牌的Apache,Tomcat,微软的Microsoft IIS(Internet Information Services),还有Lighttpd,IBM的WebSphere服务器,Oracle的Weblogic,以及W3C的Jigsaw等等下图是2022年5月份Net Craft网站统计的各种服务器市场占有率排行,目前Nginx已经超越Apache跃居第一了!

一、Nginx概述

Nginx是由俄罗斯人伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,从2002开始开发,2004年发布了第一个版本,09年开始支持Windows版本,11年1.0版本发布,同时成立了nginx-plus商业公司15年发布了一个重要的功能,提供了stream四层反向代理,支持http2,截止到2022年6月,nginx最新稳定版本是1.22.0。

其核心特点如下

  • 对操作系统内核深度挖掘,实现了高并发,高性能
  • 优秀的模块化设计,生态圈号,可扩展性好
  • 反向代理,负载均衡,保证了高可靠性
  • 热部署,热升级
  • BSD许可,可修改商用

二、Nginx构成,安装以及配置文件

如果把nginx比喻成一辆汽车,那么跟这辆车相关的部分可简单分为四部分——车身本体,驾驶员,GPS导航以及维修厂,对应于相关文件分别是由源码各个模块编译出来的可执行文件,控制nginx行为的nginx.conf配置文件,记录每一条访问的access.log文件,定位问题的error.log文件。如下是nginx安装包的所有文件列表及其对应的功能:

text
auto -------- 编译必须的工具以及操作系统判断相关的文件 CHANGES ----- 英文版变更列表 CHANGES.ru -- 俄语版变更列表 conf -------- 配置文件夹 configure --- configure脚本,保证正确编译 contrib ----- 两个perl脚本,一个vim辅助工具 html -------- html示例文件 LICENSE ----- license文件 man --------- 帮助文档 README ------ 说明文档 src --------- 源码文件

编译安装详见**Debian Server部署全过程记录**,这里着重记录下配置文件的语法。Nginx的配置文件是一个文本文件,存放在安装目录下的conf文件夹里,通常是nginx.conf,不过也可以使用-c选项手动指定。其语法规则基本如下:

  1. 配置文件由指令和指令块构成
  2. 每条指令以分号结尾,指令与参数之间用空格分隔
  3. 指令块用大括号将多条指令组织在一起
  4. include语句允许聚合多个配置文件以提高可维护性
  5. 使用#符号作为注释,提高可读性
  6. 使用$符号做变量引用
  7. 部分指令参数支持正则表达式
  8. 包括四个块:http,upstream,server,location

更多配置选项,比如模块功能,变量使用,可以参考NGINX官方文档

三、配置upstream

CDN(Content Delivery Networks)可能是一个比较小众的名词,不太为人所知,它的角色可以用现实中的快递小哥作类比,是名副其实的网络界的快递小哥。简单来说就是将客户网站允许被缓存的内容存储到CDN的服务器上,用户再次访问的时候,直接从CDN服务器返回即可(因为CDN服务器遍布全国,甚至全世界,而自己的服务器受地域,带宽,本机性能的影响)。没错,upstream正是起关键作用的那一个,它可以将客户的内容以一定的算法存储起来,当用户需要的时候直接提供访问。

nginx
# 模拟客户源站 # =============================================== server { listen 127.0.0.1:8080; location / { alias /root/nginx/wiki/; index index.html index.htm; } # 模拟CDN的VIP或RIP # =============================================== proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=mycache:100m max_size=10G inactive=60m use_temp_path=off; upstream local { server 127.0.0.1:8080; } server { listen 80; server_name nginx.rustle.cc; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache mycache; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 302 304 1d; proxy_pass http://local; } }

如上是第一个配置是nginx服务器,模拟的是客户源站,第二个配置是OpenResty服务器,模拟的是CDN的VIP或者RIP,条件有限,就在同一个机器上部署了,不过效果是一样的。当用户访问OpenResty配置的域名时,会缓存下所有的文件,此时停止nginx服务,再次访问域名仍然可以成功现实页面。

四、日志可视化工具-Go Access

TBD

五、其他补充

A. Nginx命令行

选项功能
-?,-hthis help
-vshow version and exit
-Vshow version and configure options then exit
-ttest configuration and exit
-Ttest configuration, dump it and exit
-qsuppress non-error messages during configuration testing
-s signalsend signal to a master process: stop, quit, reopen, reload
-p prefixset prefix path (default: /root/nginx/)
-e filenameset error log file (default: logs/error.log)
-c filenameset configuration file (default: conf/nginx.conf)
-g directivesset global directives out of configuration file

其中-s选项支持stopstartquitreloadreopen命令,功能分别是停止,启动,优雅退出,重载配置以及重新记录日志。

B. 单位相关

**时间单位含义空间单位含义**
ms毫秒NULL不加单位,默认byte
sk/Kkilobytes
m分钟m/Mmegabytes
h小时g/Ggigabytes
d
w星期
M
y

六、参考文档

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Manford Fan

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!