×

nginx.反向代理

nginx之30分钟搞定nginx反向代理和负载均衡

我的笔记 我的笔记 发表于2018-02-19 11:08:19 浏览2604 评论0

抢沙发发表评论

1. 什么是代理服务器

1.1. 代理服务器的好处

nginx之30分钟搞定nginx反向代理和负载均衡

代理服务器架构

1)提高访问速度 由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。 2)防火墙作用 由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。 3)通过代理服务器访问不能访问的目标站点 互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。

1.2. 代理服务器的分类

正向代理和反向代理:

正向代理:架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。 用户能感知到代理服务器的存在。

反向代理:现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。 用户对代理服务器无感知。

2. 安装单机版nginx

2.1. nginx简介

Nginx是一款的 服务器/服务器及(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

2.2. 安装nginx服务

nginx之30分钟搞定nginx反向代理和负载均衡

单机nginx服务器

1) 环境准备

修改ip

a;修改主机名,

b;修改网关能上网,

c;关闭防火墙

d;修改系统安全设置

1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态

SELinux status: enabled

2、修改配置文件需要重启机器:

修改/etc/selinux/config 文件  

将SELINUX=enforcing改为SELINUX=disabled  重启机器即可。  

2) 安装GCC编译器等工具:

一、安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

二、首先要安装 PCRE

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

1、下载 PCRE 安装包,下载地址:

[root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

2、解压安装包

[root@bogon src]# tar zxvf pcre-8.35.tar.gz

3、进入安装包目录

[root@bogon src]# cd pcre-8.35

4、编译安装

[root@bogon pcre-8.35]# ./configure
[root@bogon pcre-8.35]# make && make install

5、查看pcre版本

[root@bogon pcre-8.35]# pcre-config --version

3) 下载安装Nginx:

CentOS 6.9下配置 yum 安装 Nginx。

第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo:

cd /etc/yum.repos.d/

vim nginx.repo

填写如下内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

保存,则会产生一个/etc/yum.repos.d/nginx.repo文件。

下面直接执行如下指令即可自动安装好Nginx:

yum install nginx -y

安装完成,下面直接就可以启动Nginx了:

service nginx start

现在Nginx已经启动了,直接访问服务器就能看到Nginx欢迎页面了的。

2.3. 配置nginx服务

1) 修改配置文件/etc/nginx/nginx.conf

# 定义Nginx运行的用户 和 用户组 如果对应服务器暴露在外面的话建议使用权限较小的用户 防止被入侵
user root;
#Nginx进程数, 建议设置为等于CPU总核心数
worker_processes 1;
#开启全局错误日志类型
error_log /var/log/nginx/error.log warn;
#进程文件
pid /var/run/nginx.pid;events {
#单个进程最大连接数
worker_connections 1024;}http {
#扩展名与文件类型映射表
include /etc/nginx/mime.types;
#默认类型
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on;
#负载均衡组
upstream myServer{  server 192.168.153.160:8080;  server 192.168.153.161:8080;  }  
server {  listen 80;  server_name 192.168.153.167; #如果是集群环境,此处换成虚ip 192.168.153.222 
location / {  proxy_pass http://myServer;  }} include /etc/nginx/conf.d/*.conf;}

保存退出,重启nginx服务。

2) 测试负载均衡,访问相同的url,显示的是不同的tomcat服务器页面。

nginx之30分钟搞定nginx反向代理和负载均衡


集群nginx服务器

nginx之30分钟搞定nginx反向代理和负载均衡

3.1. 安装keepalived

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。类似软件还有(heardbeat,vcs).

在192.168.153.167和192.168.153.165两个机器分别执行下面的命令:

yum –y install keepalived


nginx之30分钟搞定nginx反向代理和负载均衡

3.2. 配置keepalived

1) 修改192.168.153.167的配置文件/etc/keepalived/keepalived.conf

global_defs {
notification_email {
test@163.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_MASTER
}
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
#state MASTER
state BACKUP
nopreempt
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.153.222 #虚拟ip
}
}
2) 修改192.168.153.165的配置文件/etc/keepalived/keepalived.conf
global_defs {
notification_email {
test@163.com
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_BACKUP
}
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh"
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 66
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(调用检测脚本)
}
virtual_ipaddress {
192.168.153.222 #虚拟ip
}
}

3) 以下是针对nginx状态进行检测的脚本,第一次nginx服务死掉时,会重新启动,如果Nginx服务无法正常启动,则杀掉keepalived进程

vim /usr/local/src/check_nginx_pid.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/sbin/nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

4) 设置keepalived开机自启动

chkconfig --level 23456 keepalived on

3.3. 测试

1) 启动两台192.168.153.167和192.168.153.165keepalived服务

nginx之30分钟搞定nginx反向代理和负载均衡

2) 检查虚拟ip 192.168.153.222是否可以正常访问tomcat,并提供负载均衡服务。

nginx之30分钟搞定nginx反向代理和负载均衡

nginx之30分钟搞定nginx反向代理和负载均衡

3) 刷新后,session共享,tomcat服务轮询。

nginx之30分钟搞定nginx反向代理和负载均衡

4) 通过192.168.153.160机器ssh 192.168.153.222(虚拟ip),发现虚拟IP在192.168.153.167上面。如下图

nginx之30分钟搞定nginx反向代理和负载均衡

5) 关闭其中一台nginx(192.168.153.167)机器,并在windows机器cmd监控虚拟ip的连通性

nginx之30分钟搞定nginx反向代理和负载均衡

6) 再次通过192.168.153.160机器ssh 192.168.153.222(虚拟ip),发现虚拟IP在192.168.153.165上面。如下图

nginx之30分钟搞定nginx反向代理和负载均衡

7) 测试keepalived的抢占模式

a) 修改192.168.153.167的配置文件/etc/keepalived/keepalived.conf

nginx之30分钟搞定nginx反向代理和负载均衡

b) 重启keepalived服务,通过ssh 192.168.153.222(虚拟ip)发现虚拟ip在主机192.168.153.167上。

c) 关闭192.168.153.167机器,通过ssh 192.168.153.222(虚拟ip)发现虚拟ip切换到备机192.168.153.165上。

d) 启动主机192.168.153.167,通过ssh 192.168.153.222(虚拟ip)发现虚拟ip切换回主机192.168.153.167上。

e) 访问http://192.168.153.222/qy73nginx/一切正常,无论是tomcat机器还是nginx都避免了单点故障。

至此,nginx单机版和集群版安装配置测试完成。


版权付亚东笔记博客所有,禁止转载!!付亚东Java笔记博客

我的笔记博客版权我的笔记博客版权