终于要开始记录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是由俄罗斯人伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,从2002开始开发,2004年发布了第一个版本,09年开始支持Windows版本,11年1.0版本发布,同时成立了nginx-plus商业公司15年发布了一个重要的功能,提供了stream四层反向代理,支持http2,截止到2022年6月,nginx最新稳定版本是1.22.0。
其核心特点如下
如果把nginx比喻成一辆汽车,那么跟这辆车相关的部分可简单分为四部分——车身本体,驾驶员,GPS导航以及维修厂,对应于相关文件分别是由源码各个模块编译出来的可执行文件,控制nginx行为的nginx.conf配置文件,记录每一条访问的access.log文件,定位问题的error.log文件。如下是nginx安装包的所有文件列表及其对应的功能:
textauto -------- 编译必须的工具以及操作系统判断相关的文件 CHANGES ----- 英文版变更列表 CHANGES.ru -- 俄语版变更列表 conf -------- 配置文件夹 configure --- configure脚本,保证正确编译 contrib ----- 两个perl脚本,一个vim辅助工具 html -------- html示例文件 LICENSE ----- license文件 man --------- 帮助文档 README ------ 说明文档 src --------- 源码文件
编译安装详见**Debian Server部署全过程记录**,这里着重记录下配置文件的语法。Nginx的配置文件是一个文本文件,存放在安装目录下的conf
文件夹里,通常是nginx.conf,不过也可以使用-c
选项手动指定。其语法规则基本如下:
include
语句允许聚合多个配置文件以提高可维护性#
符号作为注释,提高可读性$
符号做变量引用更多配置选项,比如模块功能,变量使用,可以参考NGINX官方文档。
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服务,再次访问域名仍然可以成功现实页面。
TBD
选项 | 功能 |
---|---|
-?,-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: /root/nginx/) |
-e filename | set error log file (default: logs/error.log) |
-c filename | set configuration file (default: conf/nginx.conf) |
-g directives | set global directives out of configuration file |
其中-s
选项支持stop
,start
,quit
,reload
和reopen
命令,功能分别是停止,启动,优雅退出,重载配置以及重新记录日志。
**时间单位 | 含义 | 空间单位 | 含义** |
---|---|---|---|
ms | 毫秒 | NULL | 不加单位,默认byte |
s | 秒 | k/K | kilobytes |
m | 分钟 | m/M | megabytes |
h | 小时 | g/G | gigabytes |
d | 天 | ||
w | 星期 | ||
M | 月 | ||
y | 年 |
本文作者:Manford Fan
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!