1. 什么是代理服务器
1.1. 代理服务器的好处
代理服务器架构
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 服务器
1) 环境准备
修改 ip
a; 修改主机名,
b; 修改网关能上网,
c; 关闭防火墙
d; 修改 系统 安全设置
1,
/usr/sbin / sestatus - v##如果SE Linux 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 安装包,下载地址: https://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
[root@bogon src]# wget https://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=https://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 https://myServer;}} include /etc/nginx/conf.d/*.conf;}
保存退出,重启 nginx 服务.
2) 测试负载均衡, 访问相同的 url,显示的是不同的 tomcat 服务器页面.
3) 引入新问题
问题一:session 变化,需要有 session 共享.
解决方案,使用 redis 实现 session 共享
问题二:nginx 服务器存在单点故障.
解决方案, 使用 keepalived 实现 nginx 高可靠集群.
3. 安装集群版 nginx
集群 nginx 服务器
3.1. 安装 keepalived
Keepalived 的作用是检测服务器的状态,如果有一台 web 服务器宕机,或工作出现故障,Keepalived 将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后 Keepalived 自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器.类似软件还有(heardbeat, vc s).
在 192.168.153.167 和 192.168.153.165 两个机器分别执行下面的命令:
yum -y install keepalived
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 服务
2) 检查虚拟 ip 192.168.153.222 是否可以正常访问 tomcat,并提供负载均衡服务.
3) 刷新后,session 共享,tomcat 服务轮询.
4) 通过 192.168.153.160 机器 ssh 192.168.153.222(虚拟 ip),发现虚拟 IP 在 192.168.153.167 上面.如下图
5) 关闭其中一台 nginx(192.168.153.167)机器,并在 windows 机器 cmd 监控虚拟 ip 的连通性
6) 再次通过 192.168.153.160 机器 ssh 192.168.153.222(虚拟 ip),发现虚拟 IP 在 192.168.153.165 上面.如下图
7) 测试 keepalived 的抢占模式
a) 修改 192.168.153.167 的配置文件 / etc/keepalived/keepalived.conf
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) 访问 https://192.168.153.222/qy73nginx / 一切正常,无论是 tomcat 机器还是 nginx 都避免了单点故障.
至此,nginx 单机版和集群版安装配置测试完成.
来源: https://www.2cto.com/kf/201801/713441.html