Niginx

基础

  1. 流程 :
    1. 分为正向代理和反向代理

    2. 在反向代理中,访问地址被nginx所拦截,而后,转发到其他位置;通过server进行处理,其中,server_name和listen用来匹配服务器,不针对其后的具体路径

    3. server匹配成功后,通过rewrite对请求url进行改写(会优先匹配),或者通过location进行转发;其二者存在一个即可;可以配置多个location,location可以对具体的路径进行匹配

    4. rewrite ^/(.*) http://www.baidu.com/ permanent; rewrite会先进行正则式的匹配,匹配完成后,在跳转到其后的路径中,其中:

      1. last:相当于apache里的(L)标记,表示完成rewrite匹配。(浏览器地址栏URL地址不变);
      2. break:本条规则匹配完成后,终止匹配,不再匹配后面的规则。(浏览器地址栏URL地址不变)
      3. redirect:返回302临时重定向,浏览器地址栏会显示跳转后的URL地址
      4. permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。
    5. location在进行匹配时,=表示精确匹配,必须完全相同,~ 表示:指定的正则表达式要区分大小写,具体

    6. location中,可以使用 proxy_pass进行转发,或者root或alias,index展示本地页面

  2. nagle算法:
    1. 当用户使用Telnet连接到远程服务器时,每一次击键操作就会产生1个字节数据,进而发送出去一个数据包,所以,在典型情况下,传送一个只拥有1个字节有效数据的数据包,却要发费40个字节长包头(即ip头20字节+tcp头20字节)的额外开销,这种有效载荷(payload)利用率极其低下的情况被统称之为愚蠢窗口症候群(Silly Window Syndrome)。
    2. 为了解决这种问题,规定如果包的大小满足MSS,那么可以立即发送,否则数据会被放到缓冲区,等到已经发送的包被确认了之后才能继续发送。通过这样的规定,可以降低网络里小包的数量,从而提升网络性能。
    3. 数据在满足一下两种情况下会发出:
      1. 积累的数据量满足mss
      2. 收到ack
    4. MTU: Maximum Transmit Unit,最大传输单元,即物理接口(数据链路层)提供给其上层(通常是IP层)最大一次传输数据的大小;以普遍使用的以太网接口为例,缺省MTU=1500 Byte,这是以太网接口对IP层的约束,如果IP层有<=1500 byte 需要发送,只需要一个IP包就可以完成发送任务;如果IP层有> 1500 byte 数据需要发送,需要分片才能完成发送,这些分片有一个共同点,即IP Header ID相同。
    5. MSS:Maximum Segment Size ,TCP提交给IP层最大分段大小,不包含TCP Header和 TCP Option,只包含TCP Payload ,MSS是TCP用来限制application层最大的发送字节数。如果底层物理接口MTU= 1500 byte,则 MSS = 1500- 20(IP Header) -20 (TCP Header) = 1460 byte,如果application 有2000 byte发送,需要两个segment才可以完成发送,第一个TCP segment = 1460,第二个TCP segment = 540。
  3. DelayedAcknowledgment(TCP Delayed Ack):
    1. 假如需要单独确认每一个包的话,那么网络中将会充斥着无数的ACK,从而降低了网络性能。
    2. 不再针对单个包发送ACK,而是一次确认两个包,或者在发送响应数据的同时捎带着发送ACK,又或者触发超时时间后再发送ACK。通过这样的规定,可以降低网络里ACK的数量,从而提升网络性能
  4. tcp_nodelay :
    1. 一般默认会启用 Nagle‘s Algorithm,和 TCP Delayed Ack,则在写写–读的情况下会出现问题
    2. 第一个Write立刻发出去,但是包比较小,接收端不会立刻发送ack;第二个Write也比较小,第二个Write只有当收到第一个Write的ack才会发送,所以会导致延迟40ms才发送第二个Write
    3. TCP_NODELAY是用来 禁用 Nagle’s Algorithm
    4. tcp_nodelay只在keep-alive才启作用
  5. sendfile:
    1. 快速传输文件,减少了用户态到内核态的复制操作
  6. 文件结构:
    1. Nginx的配置文件nginx.conf位于其安装目录的conf目录下。
    2. nginx.conf由多个块组成,最外面的块是main,main包含Events和HTTP,HTTP包含upstream和多个Server,Server又包含多个location:
    3. main全局设置、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。
    4. mian 无标签,在最外层
    5. main块设置的指令将影响其他所有设置;
    6. server块的指令主要用于指定主机和端口
    7. upstream指令主要用于负载均衡,设置一系列的后端服务器
    8. location块用于匹配网页位置
    9. server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
  7. 转发规则
    1. 监听位置 以及其之前的字符串 被完全替换为 proxy_pass
    2. 当监听位置 如/A,不在域名后,如 http://wff.lietou.com/mm/A/cc/dd,则proxy_pass仅替换域名,其后部分保留
    3. proxy_pass 仅可以在匹配最左的情况下修改请求实际路径,否则仅域名及域名后部分
    4. location proxy_pass
      1. 监听 /
        1. proxy_pass http://127.0.0.1:8080/a
        2. 请求 http://wff.lietou.com/manager/index.jsp
        3. 实际请求路径 http://127.0.0.1:8080/amanager/index.jsp
        4. 域名以及域名后的“/”,被proxy_pass完全替换
      2. /A
        1. proxy_pass http://127.0.0.1:8080/a/ ;
        2. 请求 http://wff.lietou.com/Amanager/html
        3. 实际请求路径 http://127.0.0.1:8080/a/manager/html
        4. proxy_pass http://127.0.0.1:8080/a;
        5. 请求 http://wff.lietou.com/Amanager/html
        6. 实际请求路径 http://127.0.0.1:8080/amanager/html
        7. proxy_pass http://127.0.0.1:8080/a/
        8. 请求 http://wff.lietou.com/mm/A/cc/dd
        9. 实际 http://127.0.0.1:8080 /a/mm/A/cc/dd
        10. proxy_pass http://127.0.0.1:8080/a ;
        11. 请求 http://wff.lietou.com/mm/A/cc
        12. http://127.0.0.1:8080/a/mm/A/cc

使用

nginx 启动

  1. 进入其conf 路径下 打开cmd文件,不使用nginx.exe(exe会闪退,cmd会一直存在,可以操作)
  2. 在命令行中 nginx -t 为检查配置文件是否可用
  3. nginx -s stop 为关闭nginx,nginx -s reload 为更新 start nginx 为开启nginx
  4. 启动失败时,可以查看日志 error

nginx 请求接入本地服务器 (兼https转http,cookie转发)

  1. switchhost 找到url请求的域名(要求全拼)配置其转发到本地127.0.0.1
  2. 配置 nginx server 监听对应域名 (server_name) 请求端口(http 80 ,https 443)
  3. 配置 server location / { proxy_pass http://127.0.0.1:8080(端口号可能不同); }
  4. 当请求为https 时 ,转发需要配置crt 和key 证书(否则不会转发cookie)
  5. config 配置文件中 ,一般使用相对路径, ssl 文件的起始路径为conf路径下,log对应的起始路径为 logs

端口转发,路径代理

  1. switchhost配置域名 ,使请求指向本地
  2. nginx 监听对应域名以及端口
  3. 配置location ,执行转发
    1. 路径 /
    2. 端口转发 ,proxy_pass 指向新的域名 或者id:port

转发请求中添加请求头

  1. location中 使用add_header
location / {
			add_header X-Requested-With XMLHttpRequest;
			proxy_pass  http://127.0.0.1:8848/ ;
			
            # root   html;
            # index  index.html index.htm;
        }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值