nginx实战

一、反向代理(proxy_pass)
http {
   include extra/*.conf------------->引入外部的配置文件
}
1、反向代理tomcat:8080
server{
    listen 80;------------------------------------>打开对80端口号的监听
    server_name localhost;------------------------>域名配置
    location / {---------------------------------->匹配规则,根据用户的uri去匹配
        proxy_pass http://ip:8080;
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For &proxy_add_x_forwarded_for;
        ---->tomcat中获取<h2><%=request.getHeader("X-Real-IP")%></h2>,可以端既可以拿到客户端的ip,也可以拿到nginx的ip
    }
}
访问:nginx:80----->会转发到tomcat:8080

二、负载均衡(upstream)


1、种类
    a、硬件负载:F5
    b、软件负载:nginx、haproxy、lvs
2、nginx负载均衡两个tomcat
upstream tomcat {
    ip_hash;
    server 192.168.11.151:8080 weight=1 max_fails=2 fail_timeout=600s;---------------->tomcat1,权重为1,允许失败两次;失败两次后多久不会再请求该tomcat
    server 192.168.11.152:8080 weight=2;---------------->tomcat2
}
server{
    listen 80;------------------------------------>打开对80端口号的监听
    server_name localhost;------------------------>域名配置
    location / {---------------------------------->匹配规则,根据用户的uri去匹配
        proxy_pass http://tomcat;
        
        proxy_next_upstream error timeout http_500;------------------------>当tomcat1发生错误或超时的时候,请求会转发到tomcat2
        proxy_connect_timeout 1ms;------------------>tomcat返回给nginx的超时时间
        proxy_send_timeout 1ms;
        proxy_read_timeout 1ms;
    }
}
3、不同的算法
    a、轮询
    b、ip_hash,根据客户端的ip进行hash
    c、权重轮询

4、4层代理和7层代理
    a、4层代理:根据匹配ip:port进行负载均衡(lvs是4层代理)
    b、7层代理:根据匹配uri进行负载均衡(nginx是7层代理)

注:4层代理几乎不消耗性能,所以一般会在nginx集群的上层加一层lvs


三、nginx动静分离
1、资源种类
    a、静态资源:html/css/图片(不需要依赖tomcat容器)
    b、动态资源:
2、静态资源的类型(nginx/conf/mime.type,就是response中的contentType)
3、动静分离就是根据mimeType进行动静分离 
4、将tomcat的静态资源放到nginx上
server{
    listen 80;------------------------------------>打开对80端口号的监听
    server_name localhost;------------------------>域名配置
    location ~ .*\.(js|css|png|jpg)$ {----------------->关于这些静态资源回到static-resource目录下去找
        root static-resource;
    }
}

四、缓存
1、加缓存
location / {---------------------------------->匹配规则,根据用户的uri去匹配
    expires 1d;-------------------------------->告诉浏览器缓存的时间
}

五、压缩(Gzip)
1、浏览器会对压缩的资源进行解压缩
http {
   gzip on;
   gzip_min_length 5k;----------->超过5k才进行压缩
   gzip_comp_level 3;----------->压缩等级,等级越高,压缩后的文件越小,但会更消耗cpu
   gzip_type application/javascript image/jpeg;-------->对哪些文件进行压缩
   gzip_buffers 4 32k;------------>压缩文件时,申请的内存大小,以32k的4倍为最小单位去申请
   gzip_very on;------------->是否传输gzip的压缩标志(response header中会有【very:Accept-Encoding】)
}

六、防盗链
1、说明:意思是本网站的资源只能通过本
location ~ .*\.(js|css|png|jpg)$ {----------------->关于这些静态资源回到static-resource目录下去找
    valid_referers none blocked 192.168.11.151  www.sunxj.com--------------->只允许该ip或该域名进行访问
    if($invalid_referer) {
        return 404;
    }
}

七、跨域访问题


1、跨域问题是浏览器本身的限制
2、利用nginx解决跨域问题
location / {---------------------------------->匹配规则,根据用户的uri去匹配
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' '*';
    add_header 'Access-Control-Allow-Header' 'Content-Type,*';
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值