认识部分nginx.conf
文件结构
打开nginx.conf(nginx我用的openresty,集成了一些插件,省大把时间),吧注释的说明都去掉,留下一个整洁的模板,长这样:
文件分成三块worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html; } } }
全局配置模块
影响nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等,worker_processes表示处理并发数,越大处理的越多,不过和硬件等有关
events配置模块
主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。上述表示最大的连接数为1024
http配置模块(http模块里又分为http全局块和server模块这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
全局模块
http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
server模块(可以有多个,分为server/location模块)
全局块 location 最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置 这块的主要作用是基于 Nginx 服务器接收到的请求字符串、对虚拟主机名称(也可以是IP别名)之外的字符串(例如 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
看上去像这样:
部分常用字段和功能
该文件是nginx到配置文件
字段 功能 worker_processes 指明nginx要开启的进程数 worker_connections 单个工作进程可以允许同时建立外部连接的数量 defult_type 响应类型:有application/octet-stream(下载)和application/text/html(网页 ) include 配置多的时候会分成多个文件,可以用此指令汇总 sendfile 提高文件的传输速率,开启后会用sendFile() keepalive_timeout 规定http请求keep-alive持续的时间,不要太大,好释放资源,提高性能 location 通过指定模式来与客户端请求的URI相匹配 server_name 指明host listen 该字段出现在server里,指明端口号 error_page 当发生错误的时候能够显示一个预定义的uri proxy_pass 反向代理字段 upstream 负载均衡配置模块 location 匹配规则
有四个优先级别
「=」级别最高
location = /a{ echo "this is the most higt level" }
」^~「级别其次
location ^~ /a { echo "this is the second level" }
「~」级别第三
location ~ /\w { echo "this is the third level" }
「普通字符串」
location / { echo "this is the final level" }
- 同优先级别的,匹配程度较高的先匹配
- 匹配程度一样的,则写在前面的先匹配
作为一个前端er,了解这些就够了吧,接下来就进入主菜
反向代理
开启nginx后默认是80端口,我因为端口号被占用,修改成了8080,访问localhost:8080
我用node自己开了个服务,端口号为8080,访问成功:
反向代理我们只需要用到proxy_pass字段,像这样:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
# 响应类型改为html
default_type text/html;
location / {
proxy_pass http://localhost:8080
}
}
}
可以看到访问默认的80端口,也会因反向代理转到8080端口
反向代理需要注意的点就是proxy_pass的路径要与location的规则一起用
负载均衡
负载均衡的职责是将网络请求,或者其他形式的负载「均摊」到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。
通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。
负载均衡可分为软件负载均衡和硬件负载均衡。在我们日常开发中,一般很难接触到硬件负载均衡。但软件负载均衡还是比如我们接下来会讲到的ngxin
可以这么配置
worker_processes 1;
events {
worker_connections 1024;
}
####################################
####### 在这里添加一个upstream 字段####
upstream serverGroups{
server localhost:80;
server localhost:8080;
server localhost:8081;
}
####################################
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
default_type text/html;
location / {
####################################
# 在这里啊host替换成上面的upstream名字 #
proxy_pass http://serverGroups
}
}
}
看看效果
自此,反向代理和负载均衡就大概是这样,我觉得作为前端er了解知道怎么弄就行,不需要去深入了解配置参数啥的