NginxLesson01

145 阅读4分钟

1 能干啥

  • 静态资源处理转发

  • 正向代理

    proxy服务器代理的客户

  • 反向代理

    proxy服务器代理的并不是客户,而是服务器 用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

    至于在内网真正访问哪台服务器内容,由这个proxy去控制。一般代理是指代理客户端,而这里代理的对象是服务器,这就是“反向”这个词的意思。Nginx就是来充当这个proxy的作用。

2 为啥要使

  • 1)安全及权限。可以看出,使用反向代理后,隐藏服务节点的IP,用户端将无法直接通过请求访问真正的内容服务器,而必须首先通过Nginx。 将服务节点置于防火墙之后,避免直接攻击业务节点服务器。可以通过在Nginx层上将危险或者没有权限的请求内容过滤掉,从而保证了服务器的安全。

  • 2) 负载均衡。例如一个网站的内容被部署在若干台服务器上,可以把这些机子看成一个集群,那么Nginx可以将接收到的客户端请求“均匀地”分配到这个集群中所有的服务器上(内部模块提供了多种负载均衡算法),从而实现服务器压力的负载均衡。此外,nginx还带有健康检查功能(服务器心跳检查),会定期轮询向集群里的所有服务器发送健康检查请求,来检查集群中是否有服务器处于异常状态,一旦发现某台服务器异常,那么在以后代理进来的客户端请求都不会被发送到该服务器上(直到后面的健康检查发现该服务器恢复正常),从而保证客户端访问的稳定性。

  • 3) 高并发,高性能

  • 4)扩展性好

  • 5)该可靠性

  • 6)热部署 在不停止服务的情况下,升级nginx

  • 7)BSD许可证。 nginxnginx不只是开源的、免费的,而且我们可以在有定制需求的场景下,去修改nginx源代码,再运行在商业场景下,这是合法的。

  • 8)服务节点更专注于业务,同时提升性能 1:由于有反向代理的存在,可以让反向代理服务器去实现比如https、gzip压缩等与业务无关的功能; 2: 提供动静态分离,将静态文件发往静态服务器或本地文件系统,避免业务节点处理这些与业务无关的请求; 3:提供缓存机制,将一些短时间内不会变化的动态内容,在反向代理服务器这层增加缓存,降低业务服务器的请求量; 4:由于控制权在代理服务这边,完全可以根据服务节点的性能动态分配请求,做到服务节点性能最佳。 正是由于Ngxin引入了反向代理的特性,让请求和响应都要经过Nginx,因此给Nginx带来了非常多的可能。比如负载均衡、HTTP缓存等

3简单语法

  • 配置文件由指令与指令块构成
  • 每条指令以;分号结尾,指令与参数间以空格符号分隔
  • 指令块以{ }大括号将多条指令组织在一起
  • include语句允许组合多个配置文件以提升可维护性
  • 使用#符号添加注释,提高可读性
  • 使用¥符号使用变量
  • 部分指令的参数支持正则表达式

4 反向代理配置

1 配置一个节点的反向代理配置

# simple reverse-proxy
server { 
    listen       80;
    server_name  big.server.com;
    access_log   logs/big.server.access.log  main;
    # pass requests for dynamic content to rails/turbogears/zope, et al
    location / {
      proxy_pass      http://127.0.0.1:8080;
    }
  }
  这里定义的规则是以big.server.com域名来请求Nginx的80端口,会将请求代理到127.0.0.1:8080上。

2:配置一组节点的反向代理配置

1)配置一组反向代理并命名。

upstream big_server_com {
    server 192.168.0.1:8000;
    server 192.168.0.1:8001;
}

这里定义了upstream,这个upstream可以理解为上传流,之所以叫上传是因为:从服务器获取数据叫下载,向服务器发送数据就叫上传,这里是将数据请求发送到服务节点,所以叫上传。 给这组服务节点命名为big_server_com,其中包括两个节点,分别是:192.168.0.1:8000和192.168.0.1:8001。 2)配置规则:让满足的请求能够反向代理到这组服务节点中。

server { 
    listen          80;
    server_name     big.server.com;
    access_log      logs/big.server.access.log main;
    location / {
      proxy_pass      http://big_server_com;
    }
  }

这里定义的规则是以big.server.com域名来请求Nginx的80端口,请求url是以/为后缀的所有请求,都会转发到前面定义的名字为big_server_com的服务节点组。

-----------文章是从 www.yuque.com/huluwa-txtk… 学习来的-