nginx
- 一、nginx简介
- 二、nginx安装及部署
- 二、修改配置文件以提高性能
一、nginx简介
二、nginx安装及部署
进入nginx.org官网,download页面,找一个稳定的版本
wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar zxf nginx-1.20.2.tar.gz
源码安装三部曲:(1)./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx中途提示什么没有安装 安装即可直至没有错误提示为止。
(2)make
要注意:必须在源码的解压路劲里面 里面有makefile文件指导
(3)make install (同上,必须在源码的解压路劲里面 里面有makefile文件指导)
退出来,进入到当时指定的文件目录:/usr/local/nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
之后就可以启动nginx
注意:由于nginx也是使用80端口,所以要在开启nginx前关闭httpd服务!!!测试:
二、修改配置文件以提高性能
17行:原有基础上添加
http {
upstream westos { westos模块有2、3服务器负责
server 172.25.73.2:80;
server 172.25.73.3:80;
server localhost backup; rs全故障后 调度器上
}
include mime.types;
default_type application/octet-stream;
文件末尾加上
server {
listen 80;
server_name www.westos.org;
location / {
proxy_pass http://westos;
}
}
最后的大括号是原来文档有的
修改完毕以后,保存退出,nginx -t (检测)nginx -s reload 即可。
遇到问题时,我们提倡查看nginx官方文档:问题1:在real server都down掉以后怎么办?
在该页面有详细的说明文档,关于real server都down掉之后的说明:
原则上,只要有一个real server活着, 就不会访问back up。上图这种情况,实际上没啥用,他自己上也是个死。问题2:real server 可否加权重?
问题3:ip_hash
其作用为:根据客户端ip进行负载均衡。就是说,相同客户端IP过来访问的时候,调度到同一个后台服务器处理。(一个server对应一个IP)
测试:
这种情况的产生就是因为:当前,我们的客户端会和server端建立一个session链接,它要有一个session保持机制,不能随便给他负载均衡。
简而言之,就是一个客户端 你把他调度到一个后端,那他是持续的,不能随意更改。
所以看到这样的测试结果,duck不必慌张,我们要的是整体的均衡。问题4:结点维护怎么办?(有一台real server不好用)
操作:手动down掉某一台real server(手动下线)(准备进行维护)
对应的,删掉down 就上线了。问题5:sticky cookie
问题阐述:
现在很多网站,走的都是CDN,都是有缓存的,
这种情况i下,客户的访问链是这样的:
Client -> dns-> CDN ->server->CDN ->Client
CDN是什么呢?
CDN是一种分布式的集群,它主要做的是缓存。他的目的是:【1.加速客户端的访问】(此处可以将CDN理解为cache,CDN可以通过nginx做二次开发,nginx支持缓存和反向代理。)【2.降低real server端的负载】
如上图所示:server端拿到的地址都是172.25.254.1来的,访问本机的80都是172.25.254.1在访问,1是我们的nginx反向代理,这种反向代理机制对我们的后端是透明的,起到一种保护机制,这样realserver是拿不到客户端地址的。
那我们该怎么办,才能实现类似于IP_HASH的负载均衡呢?
现在,ip_hash的方式已经不适用于这种反向地理的模式了,因为real server拿不到真是客户端的ip。
那么我们可以尝试用session cookie 的方法:
session是在服务器端的,cookie是在浏览器端的。当客户端第一次访问服务端的时候,服务端会返回给客户端一个cookie,这样server端通过cookie分辨来源。
但是当前nginx不支持,ngxin文档中也说明是nginx plus 才支持的,所以,我们要扩充一下当前的调度算法。
step1:nginx -s stop
step2:下载工具包
step3:重新编译
编译完后,我们在对其的性能进行完善:
首先,vim auoto/cc/gcc
其次,隐藏版本号
vim src/core/nginx.h
划重点:源码编译三部曲,由于此处是重新编译(更新),所以做完./configure和make就好,不要做make install!!!接着
然后,就可以 vim /usr/local/nginx/conf/nginx.conf
测试:
换一个浏览可能响应的服务器就会不一样。