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
中途提示什么没有安装 安装即可

nginx离线安装下载 nginx1.20安装_nginx离线安装下载


nginx离线安装下载 nginx1.20安装_nginx_02


直至没有错误提示为止。



(2)make


 要注意:必须在源码的解压路劲里面 里面有makefile文件指导



(3)make install (同上,必须在源码的解压路劲里面 里面有makefile文件指导)


退出来,进入到当时指定的文件目录:/usr/local/nginx

ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/

nginx离线安装下载 nginx1.20安装_客户端_03


之后就可以启动nginx

注意:由于nginx也是使用80端口,所以要在开启nginx前关闭httpd服务!!!测试:

nginx离线安装下载 nginx1.20安装_https_04


nginx离线安装下载 nginx1.20安装_nginx_05


nginx离线安装下载 nginx1.20安装_客户端_06

二、修改配置文件以提高性能

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离线安装下载 nginx1.20安装_客户端_07


nginx离线安装下载 nginx1.20安装_客户端_08


遇到问题时,我们提倡查看nginx官方文档:问题1:在real server都down掉以后怎么办?

nginx离线安装下载 nginx1.20安装_客户端_09


在该页面有详细的说明文档,关于real server都down掉之后的说明:

nginx离线安装下载 nginx1.20安装_客户端_10

nginx离线安装下载 nginx1.20安装_客户端_11


nginx离线安装下载 nginx1.20安装_https_12


原则上,只要有一个real server活着, 就不会访问back up。上图这种情况,实际上没啥用,他自己上也是个死。问题2:real server 可否加权重?

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_13


nginx离线安装下载 nginx1.20安装_nginx_14


问题3:ip_hash

其作用为:根据客户端ip进行负载均衡。就是说,相同客户端IP过来访问的时候,调度到同一个后台服务器处理。(一个server对应一个IP)

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_15


nginx离线安装下载 nginx1.20安装_nginx_16


测试:

nginx离线安装下载 nginx1.20安装_运维_17


这种情况的产生就是因为:当前,我们的客户端会和server端建立一个session链接,它要有一个session保持机制,不能随便给他负载均衡。

简而言之,就是一个客户端 你把他调度到一个后端,那他是持续的,不能随意更改。

所以看到这样的测试结果,duck不必慌张,我们要的是整体的均衡。问题4:结点维护怎么办?(有一台real server不好用)

操作:手动down掉某一台real server(手动下线)(准备进行维护)

nginx离线安装下载 nginx1.20安装_运维_18

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_19


对应的,删掉down 就上线了。问题5:sticky cookie

nginx离线安装下载 nginx1.20安装_nginx_20


问题阐述:

现在很多网站,走的都是CDN,都是有缓存的,

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_21


这种情况i下,客户的访问链是这样的:

Client -> dns-> CDN ->server->CDN ->Client

CDN是什么呢?

CDN是一种分布式的集群,它主要做的是缓存。他的目的是:【1.加速客户端的访问】(此处可以将CDN理解为cache,CDN可以通过nginx做二次开发,nginx支持缓存和反向代理。)【2.降低real server端的负载】

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_22


如上图所示: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:下载工具包

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_23


step3:重新编译

nginx离线安装下载 nginx1.20安装_nginx_24


nginx离线安装下载 nginx1.20安装_运维_25


编译完后,我们在对其的性能进行完善:

首先,vim auoto/cc/gcc

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_26


其次,隐藏版本号

nginx离线安装下载 nginx1.20安装_客户端_27


vim src/core/nginx.h

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_28


nginx离线安装下载 nginx1.20安装_客户端_29


划重点:源码编译三部曲,由于此处是重新编译(更新),所以做完./configure和make就好,不要做make install!!!接着

nginx离线安装下载 nginx1.20安装_运维_30


然后,就可以 vim /usr/local/nginx/conf/nginx.conf

nginx离线安装下载 nginx1.20安装_nginx离线安装下载_31


测试:

换一个浏览可能响应的服务器就会不一样。

nginx离线安装下载 nginx1.20安装_nginx_32