本文主要和大家分享Nginx场景应用技术希望能帮助到大家。Nginx作为静态资源web服务配置上下文:http、server或location。 可能涉及到,资源压缩、跨域访问、防盗链等场景。 资源压缩配置的上下文:http、server或location 跨域配置的上下文:http、server或location 防盗链配置的上下文:server、location 配置参考 vi /etc/nginx/conf.d/default.conf
  server {     ...          # 开启sendfile,提高网络包的传输效率     sendfile on;          # 配置图片资源的存放路径及压缩方式     location ~ .*.(jpg|gif|png)$ {         gzip on;         gzip_http_version 1.1;         gzip_comp_level 2;         gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;         # 图片防盗链配置          # 不指定referer 协议不正确 放行指定IP 放行SEO优化         valid_referers none blocked 39.104.116.91 ~/google./;         if ($invalid_referer) {             return 403;         }         root /opt/app/code/images;     }
      # 配置txt|xml资源的存放路径及压缩方式     location ~ .*.(txt|xml)$ {         gzip on;         gzip_http_version 1.1;         gzip_comp_level 1;         gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;         root /opt/app/code/doc;     }     # 缓存与跨域场景配置     location ~ .*.(html|htm)$ {         #给返回报文添加Cache-Control、Expires头,控制缓存         #expires 24h;         #允许跨域到指定域         add_header Access-Control-Allow-Origin http://somehost.com;         add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;         root /opt/app/code;     }
  }
 Nginx作为代理服务正向代理正向代理即客户端代理。客户端通过设置代理服务器,从而达到对目标地址的访问需求。 Nginx可以充当这个代理服务器 配置参考 vi /etc/nginx/conf.d/default.conf
  server {     ...     # 可能会涉及到DNS域名解析     resolver 8.8.8.8;     location / {         # 原封不动的让自己转发客户端的请求         proxy_pass http://$http_host$request_uri;     } }
 反向代理反向代理即服务端代理。对客户端隐藏真实服务器地址。 配置参考 vi /etc/nginx/conf.d/default.conf
  server { location / {         #Real Server地址         proxy_pass http://127.0.0.1:8080;         include proxy_params;     } }
 # 其他代理配置独立出去,方便复用 vi /etc/nginx/proxy_param
  # default就可以了。除非返回301的场景,可能需要改写 proxy_redirect defalut;
  #配置header信息,让Real Server了解实际客户端信息 proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr;
  #一些代理超时设置 proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60;
  #代理缓冲区设置 proxy_buffer_size 32k; proxy_buffering on; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_max_temp_file_size 256k;
  Nginx作为负载均衡服务参考配置 vi /etc/nginx/conf.d/default.conf
  upstream backend {     server 192.168.1.101:8001;     server 192.168.1.102:8002;     server 192.168.1.102:8003 down;     server 192.168.1.103:8004 backup; } server {     ...     location / {         # 代理到upstream组         proxy_pass http://backend;         include proxy_params;     } }
 server额外参数 upstream组的server后面,支持加以下参数: | 参数 | 说明 | 
|---|
 | down | 不参与负载均衡 |  | backup | 预留的备份服务器。当没有其他节点提供服务时,它才提供服务 |  | max_fails | 允许请求失败的次数 |  | fail_timeout | 经过max_fails失败后,服务暂停的时间 |  | max_conns | 限制最大接收的连接数 |  
 负载均衡调度算法 | 方式 | 说明 | 
|---|
 | 轮询 | 按顺序逐一分配给不同的后端服务器 |  | 加权轮询 | weight值越大,分配到的几率越大 |  | ip_hash | 同一IP固定访问同一个后端服务器 |  | least_conn | 哪个连接数少就发哪个机器 |  | url_hash | 按url参数的hash结果来分配 |  | hash关键数值 | hash自定义的key |  
 # 加权轮询 upstream backend {     server 192.168.1.101:8001 weight=5;     server 192.168.1.102:8002;     server 192.168.1.102:8003 down;     server 192.168.1.103:8004 backup; }
  # IP HASH upstream backend {     ip_hash;     server 192.168.1.101:8001;     server 192.168.1.102:8002;     server 192.168.1.102:8003 down;     server 192.168.1.103:8004 backup; }
  # 最少连接数 upstream backend {     least_conn;     server 192.168.1.101:8001;     server 192.168.1.102:8002;     server 192.168.1.102:8003 down;     server 192.168.1.103:8004 backup; }
  # URL HASH upstream backend {     url_hash;     server 192.168.1.101:8001;     server 192.168.1.102:8002;     server 192.168.1.102:8003 down;     server 192.168.1.103:8004 backup;
 
   |