Nginx反向代理 负载均衡 缓存 压缩 跨域

反向代理

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass  http://192.168.189.130:8080;
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

负载均衡

1、负载均衡使用的是nginx的http upstream模块,语法:server address;
2、负载均衡策略或算法:默认使用轮询算法,可以使用ip_hash 或者 权重轮询

3、为了配置清晰,在nginx配置文件中http模块引入额外配置

http {
    include       mime.types;

    #负载均衡模块
		upstream tomcat {
		    #最大失败2次,失败后在60秒内不再转发到该机器
		    server 192.168.189.130:8080 max_fails=2 fail_timeout=60s;
		    server 192.168.189.132:8080 max_fails=2 fail_timeout=60s;
		}
		server {
		    listen 80;
		    server_name localhost;
		    location / {
		
		        proxy_pass http://tomcat;
		        proxy_set_header Host $host;
		        proxy_set_header X-Real-IP $remote_addr;
		        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		        #性能优化相关
		        #例:130机器 error、超时、500、503的时候请求转到132
		        proxy_next_upstream error timeout http_500 http_503;
		        #连接超时时间
		        proxy_connect_timeout 60s;
		        proxy_send_timeout 60s;
		        proxy_read_timeout 60s;
		
		    }
		}
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # server {
     #   listen       80;
     #   server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
      #}
}

缓存

nginx可以通过expires设置缓存,比如我们可以针对图片做缓存。
在location中设置expires
格式: expires 30s|m|h|d

#负载均衡模块
upstream tomcat {
    #最大失败2次,失败后在60秒内不再转发到该机器
    server 192.168.189.130:8080 max_fails=2 fail_timeout=60s;
    server 192.168.189.132:8080 max_fails=2 fail_timeout=60s;
}
server {
    listen 80;
    server_name localhost;
    location / {

        proxy_pass http://tomcat;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #性能优化相关
        #例:130机器 error、超时、500、503的时候请求转到132
        proxy_next_upstream error timeout http_500 http_503;
        #连接超时时间
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;

    }
}
location ~ .*\.(js|css|png|svg|ico|jpg)$ {
         root static-resource;
         expires 1d; #s设置缓存
}

压缩

Nginx中提供了一种Gzip的压缩优化手段,可以对后端的文件进行压缩传输,压缩以后的好处在于能够降低文件的大小来提高传输效率
配置信息
Gzip on|off 是否开启gzip压缩
Gzip_buffers 4 16k #设置gzip申请内存的大小,作用是按指定大小的倍数申请内存空间。4 16k代表按照原始数据大小以16k为单位的4倍申请内存。
Gzip_comp_level[1-9] 压缩级别, 级别越高,压缩越小,但是会占用CPU资源
Gzip_disable #正则匹配UA 表示什么样的浏览器不进行gzip
Gzip_min_length #开始压缩的最小长度(小于多少就不做压缩),可以指定单位,比如 1k
Gzip_http_version 1.0|1.1 表示开始压缩的http协议版本
Gzip_proxied (nginx 做前端代理时启用该选项,表示无论后端服务器的headers头返回什么信息,都无条件启用压缩)
Gzip_type text/pliain,application/xml 对那些类型的文件做压缩 (conf/mime.conf)
Gzip_vary on|off 是否传输gzip压缩标识; 启用应答头"Vary: Accept-Encoding";给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

	http {
    include       mime.types;

    include      extra/*.conf;

    default_type  application/octet-stream;

    #配置nginx压缩
    gzip on;
    gzip_min_length 5k;
    gzip_comp_level 3;
    gzip_types application/javascript image/jpeg image/svg+xml;
    gzip_buffers 4 32k;
    gzip_vary on;
   }

防盗链

如果 192.168.189.132 访问正常 其余返回404

#负载均衡模块
upstream tomcat {
    #最大失败2次,失败后在60秒内不再转发到该机器
    # server 192.168.189.130:8080 max_fails=2 fail_timeout=60s;
    server 192.168.189.132:8080 max_fails=2 fail_timeout=60s;
}
server {
    listen 80;
    server_name localhost;
    location / {

        proxy_pass http://tomcat;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #性能优化相关
        #例:130机器 error、超时、500、503的时候请求转到132
        proxy_next_upstream error timeout http_500 http_503;
        #连接超时时间
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;

    }


    location ~ .*\.(js|css|png|svg|ico|jpg)$ {
         #防盗链
         #设置静态资源只能192.168.189.132访问,其他ip访问返回404
         valid_referers none blocked 192.168.189.132;
         if ($invalid_referer) {
             return 404;
         }
         root static-resource;
         expires 1d;
    }

允许跨域

server {
    listen 80;
    server_name localhost;
    location / {
        # 注释最原始的代理,使用负载均衡
        # proxy_pass http://192.168.189.132:8080;
        proxy_pass http://tomcat;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #性能优化相关
        #例:130机器 error、超时、500、503的时候请求转到132
        proxy_next_upstream error timeout http_500 http_503;
        #连接超时时间
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;

        #跨域请求,注释掉130,只代理132
        add_header 'Access-Control-Allow-Origin' '*';  #允许来自所有的访问地址
        add_header 'Access-Control-Allow-Methods' 'GET,PUT,POST,DELETE,OPTIONS'; #支持的请求方式
        add_header 'Access-Control-Allow-Header' 'Content-Type,*'; #支持的媒体类型
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值