一、nginx的安装编译
server1:
[1] nginx的安装包:nginx-1.14.0.tar.gz
[2] 解压 tar zxf nginx-1.14.0.tar.gz
进入解压文件,修改编译配置(版本号、占空间大小...)
[root@server1 nginx-1.14.0]# ls
auto CHANGES.ru configure html man src
CHANGES conf contrib LICENSE README
[root@server1 nginx-1.14.0]# vim src/core/nginx.h
14 #define NGINX_VER "nginx" ##去掉版本号
[root@server1 nginx-1.14.0]# vim auto/cc/gcc
172 #CFLAGS="$CFLAGS -g" ## du -sh 注释172行之后nginx占用空间小
[3] 编译 ./configure 编译 make make install
make就做了编译汇编的工作,他是根据makefile的文件来编译汇编的;而makefile是configure根据一个叫做 makefile.in的模板文件生成的;makefile.in是由一个叫automake的工具生成的,configure是由一个叫 autoconf的工具生成的。make install把编译好的文件复制到指定的目录,说到底就是调用了install命令。
[root@server1 nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
--with-http_stub_status_module --with-threads --with-file-aio
## 编译不成功时看错误提示:安装gcc 和 两个依赖项pcre-devel和 openssl-devel,编译完成生成Makefile文件!
[root@server1 nginx-1.14.0]# make && make install
./configure 解释说明:
--help:获得其支持使用的选项
--prefix=/PATH/TO/SOMEWHERE:指定默认安装位置;默认为/usr/local/;
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
--enable-FEATURE[=ARG]:开启指定特性以及安装路径;默认开启时无须指定;
--disable-FEATURE:关闭指定特性;默认关闭时无须指定;
--with-PACKAGE[=ARG]:安装指定依赖包以及其安装路径;
--without-PACKAGE:不安装指定依赖包;
注意:
1. 上面make后,可以使用make clean将编译参数清空,接着重新make;
2.上面configure发现错误,可以使用makedistclean,将configure参数全部清空,接着重新./configure–>make;
[4] 打开nginx
[root@server1 nginx-1.14.0]# cd /usr/local/nginx/
[root@server1 nginx]# cd sbin
[root@server1 sbin]# ls
nginx
[root@server1 sbin]# du -sh ##查看nginx占用大小
888K .
[root@server1 sbin]# cd ..
[root@server1 nginx]# ls
conf html logs sbin
[root@server1 nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin ## 设置快捷方式
[root@server1 nginx]# nginx ##打开nginx
[root@server1 nginx]# netstat -antlp ##查看打开nginx端口
打开nginx : nginx
关闭nginx : nginx -s stop加载nginx查看错误:nginx -t
重新加载nginx : nginx -s reload
二、nginx实现负载均衡
server1:
nginx的主配置文件在:/usr/local/ngxin/conf/nginx.conf
[1] 编辑nginx的主配置文件
2 user nginx nginx;
3 worker_processes 1;如果是2核cpu,worker_processes 2; worker_cpu_affinity 01 10;
如果是4核cpu,worker_processes 4; worker_cpu_affinity 0001 0010 1000 1000;
4 events {
5 worker_connections 65536; # 进程最大连接数,一个cpu为65536,两个cpu为65536*2
6 }16 http {
17 upstream westos { # 负载均衡的算法,不写算法默认使用rr(轮询)
18 server 172.25.254.2:80; # 后端服务器server2
19 server 172.25.254.3:80; # 后端服务器server320 server 172.25.254.1:8080 backup; # 后端服务器全坏时的主备
21 }
22 include mime.types;
23 default_type application/octet-stream;119 server {
120 listen 80; # nginx监听80端口
121 server_name www.westos.org; # 访问域名www.westos.org
122
123 location / {
124 proxy_pass http://westos; #访问上边的虚拟主机
125 }
126 }
##创建nginx用户useradd -M -d /usr/local/ngxin/ nginx (指定家目录)
[root@server1 conf]# useradd -M -d /user/local/nginx -u 800 nginx
[root@server1 conf]# id nginx
uid=800(nginx) gid=800(nginx) 组=800(nginx)
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload
[root@server1 conf]# ps ax
[2] 查看系统支持最大文件数:
[root@server1 conf]# sysctl -a |grep file
fs.file-nr = 512 0 98865
fs.file-max = 98865
[root@server1 conf]# su - nginx
-bash-4.1$ ulimit -a
open files (-n) 1024
[root@server1 conf]# vim /etc/security/limits.conf ##最后一行添加(使nginx工作在nginx的用户空间)
nginx - nofile 65535
[root@server1 conf]# su - nginx
-bash-4.1$ ulimit -a
open files (-n) 65535
[4].重新加载nginx :
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload
server2和server3:
打开httpd
[root@server2 ~]# /etc/init.d/httpd start
[root@server3 ~]# /etc/init.d/httpd start
在172.25.254.96的物理主机上测试(或者浏览器搜索www.westos.org):
[1] rr算法 负载均衡
[2] 修改权重:
http {
upstream westos {
server 172.25.254.2:80 weight=2;
server 172.25.254.3:80;
}
[3] down 掉server2:
http {
upstream westos {
server 172.25.254.2:80 down;
server 172.25.254.3:80;
}
[4] server2、3down 时,server1 作为主备
http {
upstream westos {
server 172.25.254.2:80;
server 172.25.254.3:80;
server 172.25.254.1:8080 backup;
}
三、在nginx中静态添加模块sticky
Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route
[1].关闭之前的nginx
nginx -s stop
[2].make clean 清除Makefile文件
[root@server1 nginx-1.14.0]# make clean ## 删除Makefile文件
rm -rf Makefile objs
[root@server1 nginx-1.14.0]# ls
auto CHANGES.ru configure html man src
CHANGES conf contrib LICENSE README
[3].添加sticky模块
[root@server1 ~]# yum install unzip
[root@server1 ~]# unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
[root@server1 ~]# ls
nginx-1.14.0
nginx-1.14.0.tar.gz
nginx-goodies-nginx-sticky-module-ng-08a395c66e42
nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
[4].重新编译安装
[root@server1 conf]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42/
[root@server1 conf]# make && make install
[root@server1 conf]# vim /usr/local/nginx/conf/nginx.conf ##没有变化,只是打了补丁
[5].在浏览器中测试