nginx服务器安装并简单实现负载均衡

简介

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

安装

服务器系统环境:centos7 64位

1、安装pcre相关插件

PCRE 作用是让 Nginx 支持 Rewrite 功能。

#进入自己的软件目录

[root@cqs conf]# cd /home/cqs/source/

#下载对应的pcre软件安装包
[root@cqs source]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

#解压

[root@cqs source]# tar zxvf pcre-8.35.tar.gz

#进入对应目录

[root@cqs source]# cd pcre-8.35

#配置对应安装目录

[root@cqs source]# ./configure --prefix=/usr/local/pcre-8.35/

#编译

[root@cqs source]#make 

#安装

[root@cqs source]#make install

#进入到对应的安装目录,检查是否安装成功

[root@cqs source]#cd /usr/local/pcre-8.35/bin/

[root@cqs bin]# ls
pcre-config  pcregrep  pcretest

[root@cqs bin]# ./pcre-config --version
8.35

2、安装nginx

#下载对应的软件包到软件目录

[root@cqs pcre]# cd /home/cqs/source/
[root@cqs source]# wget http://nginx.org/download/nginx-1.6.2.tar.gz

#解压

[root@cqs source]#tar zxvf nginx-1.6.2.tar.gz

#进入目录,配置

[root@cqs source]#cd nginx-1.6.2

[root@cqsnginx-1.6.2]#./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.35/

#编译

[root@cqsnginx-1.6.2]#make

make -f objs/Makefile
make[1]: Entering directory `/home/cqs/source/nginx-1.6.2'
cd /usr/local/pcre-8.35/ \
        && if [ -f Makefile ]; then make distclean; fi \
        && CC="cc" CFLAGS="-O2 -fomit-frame-pointer -pipe " \
        ./configure --disable-shared 
/bin/sh: line 2: ./configure: 没有那个文件或目录
make[1]: *** [/usr/local/pcre-8.35//Makefile] 错误 127
make[1]: Leaving directory `/home/cqs/source/nginx-1.6.2'
make: *** [build] 错误 2

#发现了错误,查看相关资料,发现是配置pcre的参数错了,--with-pcre=DIR这个表示pcre的源目录,而不是安装目录

[root@cqs nginx-1.6.2]# ./configure --help | grep '\--with-pcre'
  --with-pcre                        force PCRE library usage
  --with-pcre=DIR                    set path to PCRE library sources
  --with-pcre-opt=OPTIONS            set additional build options for PCRE
  --with-pcre-jit                    build PCRE with JIT compilation support

#重新配置,编译

[root@cqs nginx-1.6.2]#./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/home/cqs/source/pcre-8.35/

[root@cqs nginx-1.6.2]#make

#安装

[root@cqs nginx-1.6.2]#make install

#进入到对应安装目录,查看安装情况和版本号

[root@cqs nginx-1.6.2]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.6.2

#安装成功,查看配置,启动服务

[root@cqs nginx-1.6.2]# cd /usr/local/nginx/
[root@cqs nginx]# ls
conf  html  logs  sbin
[root@cqs nginx]# cd conf/

#查看配置档是否正常

[root@cqs conf]# /usr/local/nginx/sbin/nginx -t          
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: [emerg] listen() to 0.0.0.0:80, backlog 511 failed (98: Address already in use)
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

#发现监听的80端口被占用了(由于服务器上安装apache服务器缘故),所以需要修改对应的监听接口

[root@cqs conf]# vim nginx.conf

listen       8080; #把原配置的80端口修改为8080
server_name  localhost;

#保存退出,再次检查配置档

[root@cqs conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#启动服务

[root@cqs conf]# /usr/local/nginx/sbin/nginx

#监听对应的进程

[root@cqs conf]# ps -ef | grep nginx
root     19427     1  0 06:41 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody   19428 19427  0 06:41 ?        00:00:00 nginx: worker process      
root     19437  1692  0 06:41 pts/0    00:00:00 grep nginx

#浏览器打开对应的地址,出现以下效果图,192.168.2.204是对应的机器ip,8080是端口号。


使用nginx实现反向代理负载均衡

nginx四大特性

反向代理、负载均衡、动静分离、正向代理。

nginx相关服务操作命令

nginx -s reload :修改配置后重新加载生效 

nginx -s reopen :重新打开日志文件 

nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确 

nginx -s stop 快速停止

nginx quit :完整有序的停止nginx

ps -ef | grep nginx :查找对应的进程号

kill -QUIT 主进程号 :从容停止Nginx 

kill -TERM 主进程号 :快速停止Nginx 

pkill -9 nginx :强制停止Nginx 

nginx -c /path/to/nginx.conf :启动nginx

kill -HUP 主进程号平滑重启nginx 

集群服务器环境

192.168.2.204:8080 nginx服务器

192.168.2.204:80 apache服务器

192.168.2.201:80 apache服务器

实现效果

A、访问nginx服务器根据不同的文件请求链接类型发送到不同的服务器上处理

B、访问nginx服务器同一文件地址,根据权重或随机请求发到不同服务器处理

步骤:

A.根据不同文件请求链接类型发送到不同服务器处理这个相对简单,步骤如下:

#进入目录,修改nginx的配置档

[root@cqs conf]# cd /usr/local/nginx/conf/
[root@cqs conf]# ls

[root@cqs conf]#vim nginx.conf

#修改对应的server模块部分,将对应部分修改为

location ^~ /mybook/ {
proxy_pass 192.168.2.201:80;
}
location ~ \.php$ {
proxy_pass 192.168.2.204:80;
}
#保存,退出。以上语句内容表示当访问链接为"根目录+/ mybook/",会自动将请求发送到192.168.2.201这台机子上,而当遇到访问链接为“根目录+xx.php”时,会自动将请求发送到192.168.2.204这台机子上。这种场景适合把不同文件类型链接请求根据规则分发不同机子上,相对简单。

B.访问同一请求时根据权重或随机请求发到不同服务器处理,步骤如下:

#进入目录,修改nginx的配置档

[root@cqs conf]# cd /usr/local/nginx/conf/
[root@cqs conf]# ls

[root@cqs conf]#vim nginx.conf

#为http模块添加upstream my-web-server模块,里面内容分别为两台apache访问地址

upstream my-web-server {
        server 192.168.2.201:80;
        server 192.168.2.204:80;
    }

#修改对应的访问正则表达式,下列模块意思为当访问到php文件链接时,反向代理到my-web-server,这个模块名字为上面自己定义。

location ~ \.php$ {
            proxy_pass    http://my-web-server; 
   }

#保存,退出。

#检查配置档是否出错

[root@cqs conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#重新加载配置档

[root@cqs conf]# /usr/local/nginx/sbin/nginx -s reload

#尝试访问对应的192.168.2.204:8080/info.php链接,info文件在nginx服务器目录下是不存在的,但是能够正常访问,对应的info.php文件代码如下

<?php

echo phpinfo();

?>

#info.php放在对应两台apache服务器下的根目录,为了区分,分别在两台机子安装了不同版本的php。

#效果如下,虽为同个地址,但是会随机跳转访问到不同的apache上。


#实际运用中,最好两台apache服务器都安装相同配置的东西,避免出现运行中的错误。

#另外,实际运用中可以配置不同的权重使得机子被访问几率不同。只需修改对应的upstream参数即可。

upstream my-web-server {
        server 192.168.2.201:80 weight=5 max_fails=2 fail_timeout=30s;
        server 192.168.2.204:80 weight=1 max_fails=2 fail_timeout=30s;
    }

这样表示5/6的几率访问第一个server,1/6访问第二个。同时还可以定义max_fails和fail_timeout等参数。

总结:主要通过以下手段实现负载均衡:

location:定义需要匹配的请求(文件或目录,可以使用正则或不使用正则直接匹配) 

proxy_pass:定义需要将请求proxy到地方(某台主机或者某个upstream cluser集群)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值