1.利用上篇博客编译nginx的源码包(在server1虚拟服务器上)
2.在自己安装nginx的目录下查看nginx命令的位置,为了方便使用,将其连接到系统命令目录/sbin下
3.去掉nginx的版本号
cd nginx-1.14.0/src/core
vim nginx.h
/*
* Copyright (C) Igor Sysoev
* Copyright (C) Nginx, Inc.
*/
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define nginx_version 1014000
#define NGINX_VERSION "1.14.0"
#define NGINX_VER "nginx" # 去掉版本号
#ifdef NGX_BUILD
#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD NGINX_VER
#endif
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
#endif /* _NGINX_H_INCLUDED_ */
4.nginx-1.14.0/auto/cc vim gcc
注释172行
5.打开nginx ,查看nginx是否可用
nginx 打开后可以查看进程
打开nginx : nginx
关闭nginx : nginx -s stop
重新加载nginx : nginx -s reload
6.nginx的默认发布目录是/usr/local/ngxin/html/index.html
可以自己编写默认发布文件:
二.nginx实现负载均衡
nginx的主配置文件在:/usr/local/ngxin/conf/nginx.conf
1.编辑nginx的主配置文件
worker_processes 1; # nginx的工作进程数,因为该虚拟机的CPU核数为1 (lscpu可查看)
events {
worker_connections 65536; # 进程最大连接数,一个cpu为65536,两个cpu为65536*2
}
http {
upstream westos {
#ip_hash # 负载均衡的算法,不写算法默认使用rr(轮询)
server 172.25.1.2:80; # 后端服务器server2
server 172.25.1.3:80; # 后端服务器server3
server 127.0.0.1:80 backup; # 后端服务器全坏时的主备
}
include mime.types;
default_type application/octet-stream;
server {
listen 80; # nginx监听80端口
server_name www.westos.org; # 访问域名www.westos.org
location / {
proxy_pass http://westos; #访问上边的虚拟主机
}
}
}
2.查看系统支持最大文件数:
sysctl -a | grep file
vim /etc/security/limits.conf
最后一行:nginx - nofile 65536 (使nginx工作在nginx的用户空间)
3.创建nginx用户useradd -M -d /usr/local/ngxin/ nginx (指定家目录)
4.重新加载nginx :
nginx -s reload
5.在测试端测试curl www.westos.org
(1).负载均衡算法rr:
(2).负载均衡算法给定权重:
在虚拟主机部分给定后端服务器权重:
server 172.25.1.2:80 weight=2 ; # 后端服务器server2
server 172.25.1.3:80; # 后端服务器server3
(3).负载均衡算法ip_hash(同一个ip访问后端服务器不变)
三.在nginx中静态添加模块sticky
Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route
1.客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。 2.后端服务器处理完请求,将响应数据返回给nginx。 3.此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值 4.客户端接收请求,并保存带route的cookie。 5.当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。
1.关闭之前的nginx
nginx -s stop
2.解压tar zxf nginx-1.10.1.tar.gz (nginx稳定版)
解压tar zxf nginx-sticky-module-ng.tar.gz(nginx sticky模块)
3.编译安装
cd nginx-1.10.1
./configure --prefix=/opt/ngxin --with-http_ssl_module --with-http_stub\
_status_module --with-threads --with-file-aio --add-module=/root/nginx\
-sticky-module-ng 必须改变安装路径,不然会覆盖之前的nginx,而且之前选择的参数这次也必须选择(这叫静态添加模块)
make
make install
4.编辑配置文件加上sticky算法(在这儿为了方便把之前的复制过来)
5.在浏览器中测试
可见浏览器中将后端服务器中的信息缓存,以便下次使用。