Nginx基础知识-笔记

前端工程师不可不知的 Nginx 知识:https://mp.weixin.qq.com/s/zlq-KhyuAbp8bRpPtRp0IQ

Nginx 安装的配置文件和目录:rpm -ql nginx
正向代理 Forward proxy:正向代理的对象是客户端,服务器端看不到真正的客户端
反向代理 Reverse proxy:反向代理的对象是服务端,客户端看不到真正的服务端
跨域:使用 CORS 、使用 Nginx 反向代理来解决跨域(proxy_pass)
Gzip:节省带宽,http1.1+,
请求限制:limit_conn_module 连接频率限制、limit_req_module 请求频率限制
访问控制:http_access_module 基于 IP 的访问控制、http_auth_basic_module 基于用户的信任登陆
ab命令:ab命令全称为:Apache bench,是 Apache 自带的压力测试工具,也可以测试 Nginx、IIS 等其他 Web 服务器。
    -n 总共的请求数、-c 并发的请求数:ab -n 1000 -c 5000 http://127.0.0.1/
防盗链:防盗链的原理就是根据请求头中 referer 得到网页来源,从而实现访问控制。这样可以防止网站资源被非法盗用,从而保证信息安全,减少带宽损耗,减轻服务器压力。
负载均衡 Load Balance
后端服务器状态
分配方式:轮询(默认)、weight(加权轮询),轮询的加强版、ip_hash、url_hash、自定义hash、fair

 

面试加分项之 Nginx 反向代理与负载均衡

nginx
nginx -s stop        // 停止
nginx -s reload        // 重启
nginx -t            // 检查修改的nginx.conf配置是否正确,ok和successful
proxy_pass url        // 反向代理

Upstream模块实现负载均衡
ip_hash指令
server指令
upstream指令及相关变量

worker_processes:工作进程数,和CPU核数相同
worker_connections:每个进程允许的最大连接数
upstream模块:负载均衡就靠它。语法格式:upstream name {} 里面写的两个server分别对应着不同的服务器
server模块:实现反向代理
 listen监督端口号:location / {}访问根路径 proxy_pass http://firstdemo,代理到firstdemo里两个服务器上
 ip_hash:作用是如果第一次访问该服务器后就记录,之后再访问都是该服务器了
 server_name:用指定的域名去访问

 

前端开发者必备的 Nginx 知识

nginx在应用程序中的作用

  • 解决跨域
  • 请求过滤
  • 配置gzip
  • 负载均衡
  • 静态资源服务器

main:nginx的全局配置,对全局生效。
events:配置影响nginx服务器或与用户的网络连接。
http:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
server:配置虚拟主机的相关参数,一个http中可以有多个server。
location:配置请求的路由,以及各种页面的处理情况。
upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

内置变量

  • $host            请求信息中的 Host,如果请求中没有 Host行,则等于设置的服务器名
  • $request_method    客户端请求类型,如 GET、 POST
  • $remote_addr    客户端的 IP地址
  • $args            请求中的参数
  • $content_length    请求头中的 Content-length字段
  • $http_user_agent    客户端agent信息
  • $http_cookie    客户端cookie信息
  • $remote_addr    客户端的IP地址
  • $remote_port    客户端的端口
  • $server_protocol    请求使用的协议,如 HTTP/1.0、·HTTP/1.1`
  • $server_addr    服务器地址
  • $server_name    服务器名称
  • $server_port    服务器的端口号

同源的定义:如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源。
nginx解决跨域的原理:只需要启动一个nginx服务器,将 server_name设置为 fe.server.com,然后设置相应的location以拦截前端需要跨域的请求,最后将请求代理回 dev.server.com

请求过滤:
1、根据状态码过滤
2、根据URL名称过滤,精准匹配URL,不匹配的URL全部重定向到主页。
3、根据请求类型过滤。

配置gzip
如何知道客户端是否支持 gzip呢,请求头中的 Accept-Encoding来标识对压缩的支持
开启gzip,默认http/1.1(HTTP/1.1默认支持 TCP持久连接)
边压缩边响应,这样可以显著提高 TTFB( TimeToFirstByte,首字节时间,WEB 性能优化重要指标)

负载均衡
1、轮询策略:默认
2、最小连接数策略:least_conn
3、最快响应时间策略:fair
4、客户端ip绑定:ip_hash(来自同一个ip的请求永远只分配一台服务器,有效解决了动态网页存在的session共享问题。)

 

nginx 反向代理和负载均衡策略实战案例

解决跨域问题
同源:URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。
浏览器的同源策略:浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。从一个域上加载的脚本不允许访问另外一个域的文档属性。

配置文件解析
配置文件主要由四部分组成:
main(全区设置)
server(主机配置)
http(控制着nginx http处理的所有核心特性)
    location(URL匹配特定位置设置)。
upstream(负载均衡服务器设置)

 

Nginx搭配Tomcat实现负载均衡:https://mp.weixin.qq.com/s/-BX7FbaGYrhxksbztqmgpA

 

 

 

 

 

 

你可能感兴趣的:(前端)