序言
Nginx由Igor专门为俄罗斯第二访问量大的.ru网站进行设计并创建的。该软件自2004年推出以来,依靠开源特性,现已达到相当高的完备程度。
Nginx用途广泛,可以用作HTTP服务提供者,也可以充当反向代理服务,还能处理邮件服务。它能够处理安全加密传输,支持域名解析,能够管理网址,还能进行数据压缩。此外,它还具备兼容大量外部插件的能力。
Nginx凭借其出色的运行可靠性、丰富的功能支持、详尽的预设配置文档以及极低的系统资源占用率脱颖而出,在全球范围内被广泛部署,活跃网站中使用比例高达12.18%,涉及大约2220万个站点。
夸耀的言辞已经到了极致,要是你还没满足,可以在百科全书或者某些书籍里找到类似的吹嘘,到处都是。
Nginx常用功能
网络中的中转服务,作为网站平台核心用途之一,特别是作为请求的转接机制。
这里有两幅图,可以说明正向代理和反向代理的区别,详细内容,需要大家查阅相关材料。

Nginx作为反向代理软件,运行效果良好,并且具备可调整的转发选项。它支持依据正则表达式,实施多样化的路由措施。例如,针对以图片为后缀的请求,会定向至文件存储系统,而动态生成的页面则会被发往应用服务器。只要正则规则设置得当,并且配套的服务部署齐全,用户就能自由组合各种转发逻辑。Nginx还负责处理错误页面跳转和异常检测。当后端服务器出现问题时,它会将请求转交给其他正常的机器,并且会自动将该有故障的服务器排除在外。
2、负载均衡
Nginx所支持的均衡分配方法分为两类:系统自带的和可自定义的。系统自带的方法包括顺序分配,按权重分配,以及基于IP的哈希分配。可自定义的方法则不受限制,几乎可以涵盖所有可能的均衡算法,你可以参考各种负载均衡的方案,然后逐一实现它们。
上3个图,理解这三种负载均衡算法的实现

IP哈希方法,针对用户端发起的网络地址实施加密处理,再依据加密数据将源自相同网络地址的访问任务分配至同一台主机执行,有助于消除负载均衡的难题。

3、web缓存
Nginx能够针对不同文件实施差异化缓存策略,其设置方式灵活多样,主要用来对特定的动态程序执行缓存操作。借助第三方工具,可以方便地对指定网址的缓存信息进行添加或删除操作。
4、Nginx相关地址
源码:
官网:
Nginx配置文件结构
如果下载已经完成,请打开安装目录下的conf文件夹,找到nginx.conf文件,这是Nginx服务器的核心设置文件,其默认版本也位于此路径。
在 nginx.conf 的注释符号为: #
nginx 默认的配置文件 nginx.conf 的具体内容展示如下:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
错误记录文件位于日志目录下的error.log文件中,该记录会以通知的形式呈现。
错误记录文件位于日志目录下的error.log文件中,该记录为信息级别。
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
默认类型为八位字节流格式,。
记录格式 主控 远程主机地址 - 远程用户名 [访问时间] 请求指令 ,
记录状态码,统计发送字节数,并追踪来源网址,这些信息都被详细记录下来。
将客户端浏览器信息与请求来源地址分开记录,并分别赋值给特定变量,同时确保这两个值都能被正确获取和使用。
日志文件 access.log 用于记录访问数据,主配置文件负责处理这些信息。
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
日志文件位置设定为host.access.log,属于主配置文件,并启用访问日志功能。
location / {
root html;
index index.html index.htm;
}
出现网址错误时,显示自定义页面,路径指向特定资源文件
将服务器错误页面定向至静态文件50x.html
#
错误页面设置,针对五百,五百零二,五百零三,五百零四等状态码,指向五十X,点HTML文件。
location = /50x.html {
root html;
}
将PHP脚本请求转发给在127.0.0.1:80端口监听的服务器,通过Apache进行中转,实现反向代理功能
#
#location ~ \.php$ {
将请求转发至地址为127.0.0.1的站点,通过代理实现
#}
将 PHP 程序传递给在 127.0.0.1:9000 上监听的 FastCGI 服务器
#
#location ~ \.php$ {
# root html;
将请求转发至本地主机9000端口上,通过fastcgi协议进行连接。
将默认页面设置为 index.php, 使用 fastcgi 指令, 在网站访问时自动应用
设置参数值,该值为路径/scripts后追加动态脚本名称,确保正确执行
引入必要的配置信息,用于规范快速CGI协议的参数设定,确保服务运行符合既定标准。
#}
拒绝进入 .htaccess 文件,倘若 Apache 的文档根目录
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
另一个虚拟主机采用IP地址、域名和端口的混合配置方式
#
#server {
# listen 8000;
仔细倾听 在端口8080处连接 某个名称
服务器的名称为某个名字,也可以称为另一个别名,或者使用不同的别称。
# location / {
# root html;
列表项标记,文件名以index开头的包括index.html和index.htm,均需索引
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# 使用 cert.pem 文件作为 ssl 证书, 保障连接安全, 传输数据加密
证书私钥文件名为cert.key。
会话缓存设置为共享模式,类型为SSL,最大容量为一兆字节。
# ssl_session_timeout 5m;
加密套件列表 高等级,排除不需要的套件,包括无认证的,以及使用MD5的
启用服务器密码优先策略,优先使用服务器端密码套件,确保安全连接,增强传输加密,保护数据安全。
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
nginx 文件结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
地点 [格式] #地点部分
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
下面给大家上一个配置文件,作为理解。
这个句子需要被彻底改写,不能使用任何原文中的词汇;句子结构要完全调整,用词也要进行丰富;必须保证与原文差异最大,但意思要保持一致;专有名词不能修改;不能加入任何英文单词;只提供改写后的结果,不要任何其他内容;语言风格要和原文保持一致,但要去掉最前面的序号;长句要拆分成多个小分句,用逗号隔开;不要遗漏句子末尾的标点符号。
设置账号或团队,原设定为匿名账号,匿名账号为初始值。
进程数量设定为两个, 这是可设定的进程值, 其默认值是单个
nginx进程的运行文件存放在指定地址,该地址为nginx.pid
记录错误日志到文件log/error.log,开启调试模式;这个配置可以放置在全局区域,或者http区域,亦或是server区域,日志级别有如下几种:调试,信息,通知,警告,错误,危机,警报,紧急
events {
网络连接实现有序化,不允许同时多个请求,这是为了防止多个进程同时被唤醒,该功能默认开启
开启多连接模式,该模式允许单个进程同时处理多个网络请求,系统预设状态为关闭
采用事件驱动架构,具体实现方式包括监听接口、异步响应机制、多路复用技术、内核级事件通知、系统底层资源调度等方案,其中核心机制为epoll。
worker_connections 限制为一千零二十四, 这个数值是可设定的, 原始的默认值是五百一十二, 它代表了服务器能够同时处理的客户端数量
}
http {
加载文件类型与扩展名对应关系表,该表用于识别不同文件的后缀名
文件默认类型为application/octet-stream,通常情况下,其预设值是text/plain
#access_log off; #取消服务日志
记录格式我的格式是 远程地址–远程用户 在 时间当地] 请求 内容 状态 传输字节数 来源网址 用户代理 代理转发信息
记录访问日志到文件log/access.log中,采用自定义的日志格式;其中combined是日志格式的标准设置
开启sendfile功能,该功能用于文件传输,通常情况下是关闭的,可以在http配置段,服务器配置段,位置配置段中设置。
传输数据最大块大小为100千字节;单个程序每次操作传送的数据量不可超出此数值,若无此限制则默认为0。
连接超时时长设定为65秒;这个参数的初始值是75秒;它允许在http,server,location等区域进行配置
upstream mysvr {
server 127.0.0.1:7878;
服务器192.168.10.121端口3333执行备份操作,当前处于主备同步状态
}
出现链接失效时,请转向百度主页访问,网址为https://www.baidu.com。
server {
长连接允许的请求数量为一百二十次,这指的是单个连接能够处理的最大请求数量。
listen 4545; #监听端口
服务名设置为点一二七点零点零点零点一,即本地回环地址
地址符合某种模式时,将执行特定操作,这种模式采用正则表达式进行判定,其中符号~代表区分大小写,而~*则表示不区分大小写。
#root path; #根目录
#index vv.txt; #设置默认页
请求被中转到mysvr, # 指向mysvr, 这是预设的服务器集群
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}
}
上面是nginx的基本配置,需要注意的有以下几点:
1、几个常见配置项:
网络连接出现时,众多处于休眠状态的程序会被集体唤醒,不过最终只有单个程序能够获取该连接,这种现象会降低系统的工作效率。
3、每个指令必须有分号结束。
扫一扫在手机端查看
-
Tags : 陕西Nginx 配置详解
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1