Nginx

作者: 忧忧草_a195 | 来源:发表于2018-11-15 21:45 被阅读11次

Nginx专为性能优化而开发,代码质量非常高,代码很规范,手法成熟,模块扩展也很容易.

主配置文件主要有以下几大块:

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。epoll

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

nginx代理服务器的类型:

1、正向代理服务器(标准代理服务器)

目的:内网的服务器通过代理服务器,然后能够访问外网的服务器

原理:内网用户将请求发给代理服务器,代理服务器根据用户需求,向真正的web服务器发出请求,然后获取到网页内容之后,在本地缓存然后发给用户。

缺点:需要用户对浏览器进行设置

2、透明代理服务器

目的和原理与正向代理服务器一致,但一般布署在网关上,用户不需要再对浏览器进行设置

需要结合iptables

3、反向代理服务器(反向加速服务器)

目的:外网客户端通过代理服务器,能够访问内网服务器的资源

原理:外网客户端访问正常的域名或者IP,其实访问的是代理服务器,代理服务器帮助客户端请求页面,在代理服务器上缓存,然后再发送给客户端。

负载均衡调度策略:

轮循:后端每台服务器的权重相同

加权轮循:在每台服务器上加入权值,权值越高的服务器分配到的请求越多

ip_hash:  把同一客户端的请求调度到同一台真实服务器上

nginx 如何配置能够获取用户的真实ip?

nginx+(apache|nginx) ,web服务器获取客户端真实IP

代理服务器:

location / {

           #root  html;

           #index  index.html index.htm;

           proxy_pass http://webs;

           proxy_set_header X-Real-ip $remote_addr;

}

WEB服务器:

apache:

LogFormat "%{X-Real-ip}i%l %u %t \"%r\" %>s %b \"%{Referer}i\"  \"%{User-Agent}i\"" combined

nginx:

安装real-ip模块

location / {

          root  html;

          index  index.html index.htm;

          set_real_ip_from 10.10.10.11;

           real_ip_header X-Real-ip;

}

防盗链

盗链:如果该服务器上只包含了网页的文本内容,而没有存储相关的图片资源,而是将图片资源链接到了其他站点的服务器上去了,这就形成了盗链问题

防盗链:我们通过检测Referer头域中的值判定是不是自己站点内的URL,是的话就采取阻止措施,实现防盗链。

配置防盗链:Nginx的ngx_http_referer_module模块中提供了一个指令valid_referers,用来获取Referer头域中的值并根据该值的情况给Nginx全局变量$invalid_referer赋值。 如果Referer头域中没有符合valid_referers指令配置的值,$invalid_referer 变量将会被赋值为1。

Nginx平滑升级:

1. 编译新版:解压,进入目录下,预编译和编译

2. 用新编译的命令替换原来的命令(最好先备份)

3. 启用新的,关闭旧的

相关文章

网友评论

      本文标题:Nginx

      本文链接:https://www.haomeiwen.com/subject/houufqtx.html