Nginx的初步探索

反向代理

  • 当一个代理服务器能够代理外部网络上的主机访问内部网络时,这种代理服务的方式称为反向代理。这个服务器上不保存任何网页的真实数据,所有的静态网页或CGI程序,都保存在内部的web服务器上,对反向代理服务器的攻击并不会使网页信息遭到破坏,增加了web服务器的安全性。
  • 反向代理方式和包过滤方式或者普通代理方式并不冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或者包过滤方式用于拒绝其他外部访问方式并提供内部网络访问外部网络的能力。因此可以结合这些方式提供最佳的安全访问方式。
  • proxy_pass http://java_server_pool
    设置进行反向代理的upstream服务器集群
  • proxy_set_header Host www.yourdomain.com
    用于在向反向代理的后端web服务器发起请求时添加指定的Header头信息。当后端web服务器上有多个基于域名的虚拟主机时,需要通过Header头信息Host,用于指定请求的域名,这样后端web服务器才能识别该反向代理访问请求由哪一个虚拟主机来处理.
  • proxy_set X-Forwarded_For $remote_addr;
    让后端web服务器获取到用户的真实IP,否则获取到的是Nginx负载均衡服务器的IP.

常见的Web负载均衡方法

  1. 用户手动选择方式:
    通过在主站首页提供不同线路、不同服务器链接的方式,来实现负载均衡
  2. DNS轮询方式:
    对同一个域名添加多条A记录,即DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,完成简单的负载均衡。Linux下可通过dig www.yourdomain.com查看域名解析情况。
    其缺点是可靠性低,若有一台服务器发生故障,则所有到达这台服务器的请求将不会有所回应,尽管删除该IP,则DNS生效也需一定时间。其次其负载均衡分配不平衡,不能区分服务器的差异,不能反应服务器当前的运行状态,不能为性能较好的服务器多分配请求。同时DNS服务器是按照一定的层次结构组织的,本地DNS服务器会缓冲已解析的域名到IP地址的映射,这会导致使用该DNS服务器的用户会在一段时间内访问同一台服务器。
    3.软件七层负载均衡:
    Nginx

Nginx负载均衡

  • upstream中的ip_hash;命令能够将同一个客户端IP的请求通过哈希算法定位到同一台后端服务器上,可保证用户登录后的session信息,但是这样可能导致负载不均衡。如果能做到服务器session共享,则可替代nginx的ip_hash方式。若某服务器需要从负载均衡中暂时摘除,只需在其后标识 down,则该组服务器会重新哈希,原暂停服务器上的session会失效。
  • upstream中server指令用于指定后端服务器的名称和参数,其名称可以是域名、IP地址、端口号或UNIX Socket.其参数可以有weight=Number,设置服务器权重,默认为1,权重越大,分配的请求越多;max_fails=Number,设置请求失败最大次数,默认为1,设置为0时将关闭这项检查;fail_timeout=Time,在经历参数max_fails设置的失败次数后,暂停的时间;down标记服务器为永久离线状态,用于ip_has指令;backup指令仅在所有非backup服务器全部宕机或繁忙的时候才启用。
    upstream的默认负载均衡方式为轮询
  • Nginx负载均衡服务器的双机高可用
    双机高可用一般是通过虚拟IP(漂移IP)方式来实现的。
    一种方式一台主服务器加一台热备服务器,其中一台处于空闲状态
    一种方式是两台负载均衡服务器均处于活动状态

Nginx rewrite规则

  • 相关指令有if,rewrite,set,return,break
    ~,~*分别表示区分大小写字母的匹配和不区分大小写字母的匹配
  • 正则表达式
  • -f,-d,-e分别用来判断文件和目录和前两者是否存在
  • 在rewrite中,last会在执行rewrite规则后重新发起请求,一般在根location或者直接在serverz中编写rewrite规则,推荐使用last,在非根location中使用break。这两者都是对url进行重写。而redirect和permanent用来实现url跳转,浏览器地址会显示跳转后的url地址。

Nginx模块开发

  • Nginx模块开发,主要是新建一个配置文件和编写一个c文件,然后通过 ./configure –add-module 模块名,然后make和make install,就可以把自己编写的模块加载在nginx,然后在nginx的配置文件中,添加location /hello {模块名;},即可通过浏览器链接访问该模块。

Nginx Web缓存

  • Nginx提供了比Squid Cache功能更强大的web缓存功能。需要把第三方ngx_cache_purge模块编译安装到Nginx中,用来清除指定url缓存。
  • 缓存指令有:
    proxy_cache zone_name
    proxy_cache_path path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;(该指令只能在http中配置)
    proxy_cache_methods GET HEAD
    proxy_cache_min_uses 1
    proxy_cache_valid 200 10m
    proxy_cache_key"$host:$server_port$uri$is_args$args"
    proxy_cache_purge cache_one $host:$1$uri$is_args$args

Nginx其它应用

  • 在ngxin中可通过设置valid_referers以及判断$invalid_referer变量来重定向实现简单的防盗链.
  • 可通过设置limit_rate 256k限制资源下载速度以及limit_rate_after 3m来限制在下载多少之后进行限速
  • 在nginx可通过加载 –with-http_ssl_module模块来实现ssl,搭建安全的Nginx Web服务器,自行颁发的SSL证书不受浏览器信任,可域名向CA机构申请购买SSL证书
  • 在Nginx中可通过加载–with-http_flv_module模块来实现下载方式的FLV视频服务器,其它格式转为flv格式时候,不含关键帧信息,不能实现拖动播放,可通过工具Yamdi或FlvTool2自动为flv文件添加关键帧信息
  • Nginx同样也可以作为正向代理服务器,即电脑通过一台服务器来上网的这种方式。在Nginx配置好代理之后,可以在IE浏览器中设置Nginx的代理地址和端口,实现在该Nginx服务器的代理下访问Internet。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值