首页 > 编程知识 正文

nginx配置多个server(nginx参数配置详解)

时间:2023-05-05 17:54:47 阅读:96422 作者:3644

概述

Nginx是由lgor塞索耶夫公司为rambler.ru设计开发的,该网站是俄罗斯访问量第二大的网站。自2004年发布以来,凭借开源的力量,已经接近成熟和完善。

Nginx功能丰富,可以作为HTTP服务器、反向代理服务器、邮件服务器使用。支持FastCGI、SSL、虚拟主机、URL重写、Gzip等功能。并且支持很多第三方模块扩展。

Nginx的稳定性、功能集、样例配置文件以及对系统资源的低消耗让他来自后,在全球活跃网站中的使用率为12.18%,约有2220万个网站。

无论如何,我们都使用nginx进行生产,而不是apache。

00-1010 1.Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。

在这里,我给你两张图片来解释转发代理和响应代理。有关详细信息,您可以阅读信息。

当作为反向代理时,Nginx可以提供稳定的性能和灵活的转发功能。Nginx可以根据不同的规则匹配采用不同的转发策略,比如图片文件末尾取文件服务器,动态页面取web服务器。只要你写的有规律,有相应的服务器解决方案,你就可以随意玩。而Nginx做出错误跳页、异常判断等。返回的结果。如果分布式服务器异常,他可以将请求转发到另一台服务器,然后自动删除异常的服务器。

2.负载平衡

Nginx提供了两种负载均衡策略:内置策略和扩展策略。内置策略有轮询、加权轮询和Ip哈希。扩张策略天马行空。只有你想不到的才是他做不到的。你可以参考所有的负载均衡算法,找出适合他实现的。

图3,了解这三种负载平衡算法的实现。

Ip哈希算法将客户端请求的ip进行哈希处理,然后根据哈希结果将同一客户端IP的请求分发到同一服务器进行处理,可以解决会话不共享的问题。

3.web缓存

Nginx可以通过不同的方式缓存不同的文件,配置灵活,支持FastCGI_Cache,主要用于缓存FastCGI动态程序。通过第三方的ngx_cache_purge,可以添加或删除URL缓存内容。

Nginx常用功能

Nginx服务器基本配置

Nginx文件结构

.#全局块

事件{ #事件块

.

}

Http #http块

{

.#http全局阻止

服务器#服务器块

{

.#服务器全局阻止

位置[模式]#位置块

{

.

}

位置[图案]

{

.

}

}

计算机网络服务器

{

.

}

.#http全局阻止

}

1.全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组、nginx进程pid存储路径、日志存储路径、配置文件介绍、允许生成的工作进程号。

2.事件阻止:配置影响nginx服务器或与用户的网络连接。每个进程有最大连接数,选择哪个事件驱动模型处理连接请求,是否同时接受多个网络连接,开启多个网络连接的序列化等。

3.http block:可以嵌套多个服务器,配置代理、缓存和日志定义等大部分功能,还可以配置第三方模块。比如文件导入、mime类型定义、日志定制、是否使用sendfile传输文件、连接超时、单个连接请求数量等。

4.服务器块:配置虚拟主机的相关参数。一个http中可以有多个服务器。

5.位置块:配置请求的路由和各种页面的处理。

让我们给你最后一个配置文件作为理解。

# # # # # # # # # #每条指令必须以分号结尾。#################

#用户管理员管理员;#配置用户或组,默认情况下,该用户或组不是任何人。

# worker _ processes 2;#允许生成的进程数,默认值为1。

# PID/nginx/PID/nginx . PID;#指定nginx进程运行文件的存储地址。

error _ log log/error . log debug;

#开发日志路径和级别。这个设置可以放。

入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg events { accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 1024; #最大连接数,默认为512 } http { include mime.types; #文件扩展名与文件类型映射表 default_type application/octet-stream; #默认文件类型,默认为text/plain #access_log off; #取消服务日志 log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式 access_log log/access.log myFormat; #combined为日志格式的默认值 sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。 sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。 keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。 upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; #热备 } error_page 404 https://www.baidu.com; #错误页 server { keepalive_requests 120; #单连接请求上限次数。 listen 4545; #监听端口 server_name 127.0.0.1; #监听地址 location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。 #root path; #根目录 #index vv.txt; #设置默认页 proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表 deny 127.0.0.1; #拒绝的ip allow 172.18.5.54; #允许的ip } }}

上面是nginx的基本配置,需要注意的有以下几点:

1、1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址; 2.$remote_user :用来记录客户端用户名称; 3.$time_local : 用来记录访问时间与时区;4.$request : 用来记录请求的url与http协议;

5.$status : 用来记录请求状态;成功是200, 6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;7.$http_referer :用来记录从那个页面链接访问过来的; 8.$http_user_agent :记录客户端浏览器的相关信息;

2、惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能。

3、每个指令必须有分号结束。


总结

篇幅有限,简单介绍下nginx的配置,带大家温故而知新,如果想了解更多配置的细节,可以看我之前的文章,nginx宝典,里面内容会更细一点。

后面会分享更多运维干货,感兴趣的朋友可以关注下~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。