什么是nginx?
nginx是一个高性能的http和反向代理web服务器, 像我们前端包部署的话一般就用nginx进行反向代理(反向代理:我们发送请求到反向代理的服务器,然后由反向代理服务器去目标服务器请求资源再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器的IP地址)
nginx的优点
占有内存少,并发能力强,稳定性高,反向代理,负载均衡,当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要多台服务器集群可以使用nginx做反向代理。多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而导致某台服务器闲置的情况。(比如淘宝,微博)
关于nginx配置
大致模板
mian #全局配置
events { #工作模式配置
....
}
http { #http设置
.....
server { #服务器主机配置
location / {
....
},
location /模块名称/ {
....
}
}
}
具体模块配置
main #全局配置
1: user 用来指定nginx worker进程运行用户以及用户组,默认nobady账号运行
2: error_log 定义错误日志文件的位置和报错日志的级别
3: woker_processes 指定nginx要开启的子进程数量
4: pid 用来指定进程id的存储文件的位置
event #工作模式配置
1: worker_connections 指定最大可以同时接收的链接数量
2: multi_accept 配置指定nginx在收到一个新连接通知后尽可能多的接受更多的连接
http #http设置(nginx的核心模块,需要根据硬件信息进行适当的配置)
1: include mime.types 指定当前文件中包含另一个文件的指令
2: default_type application/octet-stream 指定默认处理的文件类型可以是二进制
3: sendfile on; 将文件的回写过程教给数据缓冲去完成,而不是放在应用中完成,对性能提升有好处
4: tcp_nopush on; 让nginx在一个数据包中发送所有的头文件,而不是一个一个单独发
5: keepalive_timeout 65; 给客户端分配连接超时间,服务器会在这个时间过关闭连接
6: gzip on; 告诉nginx采用gzip压缩的形式发送数据,减少发送的数据量
7: gzip_min_length;设置对数据启用压缩的最少字节数
server #服务器主机配置(虚拟主机,反向代理)
1: server 80; 一个虚拟主机的配置,一个http中可以配置多个server;
2: server_name 用来指定ip的地址或者域名
3: charset: 用于设置路径中配置网页的默认编码格式
4: access_log 指定服务器中访问记录日志的地址
5: error_log 指定服务器中错误日志的地址
server -> location/ #前台包路由配置
1: location/: 匹配访问的根目录
2: root: 前台包的位置
3: index: 在不指定访问的具体资源时,默认展示的资源文件里诶包
server -> location ^~ /模块名称/ #反向代理
1: proxy_pass: 反向代理服务器的ip地址
2: proxy_redirect off; 重定向被代理服务器的地址
3: proxy_set_header (设置请求头传递给后端服务器)
4: proxy_read_timeout 设置等待后端应用服务器的时间
5: proxy_send_tiomout 设置发送请求超时时间
关于location 路径匹配
=开头的是精准匹配 只匹配根目录结尾的请求,后面不能带任何字符串
^~开头表示url以某个字符串开头,非正则匹配
~ 区分大小写的正则匹配
~*不区分大小写的正则匹配
/ 通用匹配,如果没有其他匹配,任何请求都会被匹配到