nginx负载均衡与动静分离

nginx由nginx内核和模块组成,内核的设计非常简洁,要处理的工作也非常简单,只需要通过配置文件,把客户端的请求映射到对应的location,然后由location来匹配并启动对应的模块去完成对应的工作。

  • 环境

192.168.2.118 nginx
192.168.2.112 lap/discus
192.168.2.111 lap/discus

  • nginx安装

其中默认安装需要rewrite模块,所以要先安装pcre

yum install pcre-devel pcre -y openssl openssl-devel
useradd www
mkdir nginxtest
cd nginxtest
wget -c http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make install

nginx初始目录

[root@mysqlm nginx]# ls
conf  html  logs  sbin

启动nginx并查看启动状态

/usr/local/nginx/sbin/nginx
[root@mysqlm sbin]# ps -ef | grep nginx
root      3997     1  0 21:22 ?        00:00:00 nginx: master process ./nginx
www       3998  3997  0 21:22 ?        00:00:00 nginx: worker process
root      4000  1428  0 21:23 pts/0    00:00:00 grep nginx
[root@mysqlm sbin]# netstat -tunpl | grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      3997/nginx

浏览器访问nginx页面
nginx负载均衡与动静分离_第1张图片

至此nginx安装完成。

  • nginx负载均衡配置

上述安装完成的nginx配置文件都是默认值。
在nginx.conf下的http模块尾部添加

include vhost/*.conf;

把nginx.conf默认的80端口改成8081(只要不是80,为了避免冲突)

在conf目录下添加vhost目录并添加lee.conf内容如下

upstream web_lee1{
        server 192.168.2.112:80 weight=1 max_fails=2 fail_timeout=30s;
        server 192.168.2.111:80 weight=1 max_fails=2 fail_timeout=30s;
}

server {
        listen       80;
        server_name  www.lee1.com;
        access_log  logs/lee1.access.log;
        index  index.jsp index.html index.htm;
        root  /data/webapps/lee1;
        location / {
            index  index.html index.htm;
            proxy_set_header  Host  $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://web_lee1;

        }
#       access_log  /usr/local/nginx/logs/lee1/access.log main;
#       error_log   /usr/local/nginx/logs/lee1/error.log  crit;

 }

上述的server表示一个虚拟主机,也可以配置多个server,也即多个虚拟域名的主机,此时多个域名对应同一个端口80

可以把upstream放在nginx.conf下,然后把server放在单独的文件中以便维护
浏览器访问192.168.2.118可以看到如下

nginx负载均衡与动静分离_第2张图片

此时nginx会轮询访问111和112的apache服务。只要有111服或112服的apache服务在运行,就可以直接访问。任何其中一个服务器的apache服务挂了,nginx会自动判断并直接访问apache服务正常的那台服务器。

  • nginx的动静分离部署

ngingx可以把客户端的动态请求和静态请求分开,nginx处理静态页面,而动态页面由nginx转到php/jsp/tomcat等后端去处理。
首先进入/usr/local/apache2/htdocs/static/image/common下,把logo.png改成logo.png.bak,此时首页里的logo消失

nginx负载均衡与动静分离_第3张图片

把112的发布目录发送到118的/data/webapps/lee1/下

scp -r htdocs/* root@192.168.2.118:/data/webapps/lee1/

在上面配置文件nginx.conf中,添加下面内容到server

location ~ .*\.(php|jsp|cgi|shtml)?$
            {
                 proxy_set_header Host  $host;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_pass http://web_lee1;
            }
        location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
         {
            root /data/webapps/lee1/;
           # expires      60d;
         }

然后重新加载nginx

/usr/local/nginx/sbin/nginx -s reload 

浏览器输入网址后可以重新显示logo图像,说明此时读取的是118里的图片

nginx负载均衡与动静分离_第4张图片

你可能感兴趣的:(web)