nginx学习记录

CentOS配置Nginx及常见命令

一、配置Nginx环境变量

在/etc/profile 文件结尾中加入配置 ,命令:vim /etc/profile
export NGINX_HOME=/usr/local/nginx
export PATH= P A T H : PATH: PATH:NGINX_HOME/sbin
编译完保存退出并执行 source /etc/profile
执行命令 nginx -v 显示nginx 版本号说明环境变量配置成功

1、nginx 起步于配置文件详解

1、什么是nginx?
Nginx 是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器; Nginx 可以作为一个HTTP服务器进 行网站的发布处理,另外 Nginx 可以作为反向代理进行负载均衡的实现。
1.1、Nginx三个主要应用场景

  1. 静态资源服务(通过本地文件系统提供服务)
  2. 缓存、负载均衡服务器
  3. API服务(OpenResty)

2、为什么选择nginx?
(1)更快 这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应;另一方面, 在高峰期(如有数以万计的并发请求), Nginx 可以比其他Web服 务器更快地响应请求。 实际上,
(2)高扩展性 Nginx 的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极 低的模块组成。因此,当对某一个模块修复 Bug 或进行升级时,可以专注于模块自身,无须 在意其他。 而且在HTTP模块中,还设计了 HTTP 过滤器模块:一个正常的 HTTP 模块在处理 完请求后,会有一串 HTTP 过滤器模块对请求的结果进行再处理。 这样,当我们开发一个新的 HTTP 模块时,不但可以使用诸如 HTTP 核心模块、events模块、log模块 等不同层次或者不同类型的模块,还可以原封不动地复用 大量已有的 HTTP 过滤器模块。 这种低耦合度的优秀设计,造就了 Nginx 庞大的第三方模块,当然,公开的第三方模块也如官方发布的模块一样容易使用。 Nginx 的模块都是嵌入到二进制文件中执行的,无论官方发布的模块还是第三方模块都 是如此。这使得第三方模块一样具备极其优秀的性能,充分利用 Nginx 的高并发特性,因 此,许多高流量的网站都倾向于开发符合自己业务特性的定制模块。
(3)高可靠性 高可靠性是我们选择 Nginx 的最基本条件,因为 Nginx 的可靠性是大家有目共睹的,很多家高流量网站都在核心服务器上大规模使用 Nginx 。 Nginx 的高 可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用模块都非常稳定,每个 worker 进程相对独立,master进程在1个 worker 进程出错时可以快速“拉起”新的 worker 子进程提供服务。
(4)低内存消耗 一般情况下,10000个非活跃的HTTP Keep-Alive连接在 Nginx 中仅消耗2.5MB的内存,这是 Nginx 支持高并发连接的基础。
(5)单机支持10万以上的并发连接 这是一个非常重要的特性!随着互联网的迅猛发展和互联网用户数量的成倍增长,各大公司、网站都需要应付海量并发请求,一个能够在峰值期顶住10万以 上并发请求的 Server, 无疑会得到大家的青睐。理论上,Nginx支持的并发连接上限取决于内存,当然,能够及时地处理更多的并发请求,是与业务特点紧密相 关的
(6)热部署 master管理进程与 worker 工作进程的分离设计,使得 worker 能够提供热部署功能,即可以在7×24小时不间断服务的前提下,升级 worker 的可执行文 件。当然,它也支持不停止服务就更新配置项、更换日志文件等功能。
(7)最自由的BSD许可协议 这是 worker 可以快速发展的强大动力。BSD许可协议不只是允许用户免费使用 worker ,它还允许用户在自己的项目中直接使用或修改 worker 源码,然后 发布。这吸引了无数开发者继续为 worker 贡献自己的智慧。

3、nginx 安装

yum -y install nginx

nginx防盗链

1 基本方式(ngx_http_referer_module模块)
在这里插入图片描述
第一行:定义了当访问资源为gif/jpg/png/bmp文件

第二行:valid_referers这个关键字定义了白名单

第三行:invalid_referer是内置变量,通过判断上一行中的valid_referers值会返回0或者1,

        none代表请求头中没有referer信息,这一般是直接在浏览器输入图片网址

        blocked代表被防火墙过滤标记过的请求

第四行:如果访问来源不在白名单内,则返回403错误

第五行:可以通过设定指定的图片来代替目标图片

这种实现可以限制大多数普通的非法请求,但不能限制有目的的请求,因为这种方式可以通过伪造referer信息来绕过

2 使用http_accesskey_module模块或lua脚本实现

原理如下:不通过referer信息判断,通过约定url后的参数key的值(加密)来判断是否是合法来源。

负载均衡配置

Nginx使用upstream实现负载均衡
nginx 提供的负载均衡可以实现上游服务器的负载均衡、故障转移、失败重试、容错、健康检查
在这里插入图片描述
1、轮询
2、加权轮询:避免低性能服务器负载过重
3、ipHash:同一主机对应的服务器总是相同
4、最少连接数:把当前请求分配给连接数最少的服务器。

失败重试:
通过配置上游服务器 max_fails 和 fail_timeout,指定每个上游服务器,当 fail_timeout 时间内失败了 max_fails 次请求,则认为该上游服务器不可用/不存 活,然后这段时间将不会访问这台上游服务器, fail_timeout 时间后会再次进行重试。
max_fails=2 fail_timeout=30s 这2个一起搭配使用,表示:当失败2次的时候,就停止使30秒

upstream swo_http_up {
      # ip_hash
      server  192.168.169.140:9001;
      server  192.168.169.140:9002 max_fails=2 fail_timeout=30s;
      # server  192.168.169.140:9003 weight=999;
      # server  192.168.169.140:9004;
    }
    server {
        listen       80;
        server_name  localhost;

        location /swoole {
             proxy_next_upstream timeout;   # 192.168.169.140:9002 超时
             proxy_next_upstream_tries  2;  # 设置重试次数,默认0表示不限制,注意此重试次数指的是所有请求次数(包括第一次和之后的重试次数之和)。
             proxy_next_upstream_timeout 10; # 设置重试最大超时时间,默认0表示不限制
             proxy_read_timeout 1;          # 连接成功后,后端服务器响应时间(代理接收超时时间)

             proxy_connect_timeout 10;  # nginx连接后端的超时时间,一般不超过75s

             proxy_pass http://swo_http_up;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值