Apache web服务软件安装启动负载均衡反向代理配置

Posted 广东互动学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache web服务软件安装启动负载均衡反向代理配置相关的知识,希望对你有一定的参考价值。

Apache服务简介

HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

Apache web服务软件安装启动、负载均衡、反向代理配置

相关模块

1.SSO Module - LemonLDAP

LemonLdap 是 Apache 的一个实现了 Web SSO 的模块,可处理超过 20 万的用户。

2.并发限制模块 - limitipconn

limitipconn 是一个 Apache 的模块,用来限制每个 IP 的并发连接数。支持 Apache 1.x 和 2.x。

3.日志监控模块

Apache Live Log 是一个 Perl 编写的模块,可以在浏览器上直接实时的通过 Ajax 技术浏览和监控 Apache 的 日志文件。

4.负载均衡模块

mod_backhand 是一个Apache 的负载平衡模块 。它定义了每个请求的HTTP重定向在一个异构的Apache服务器群集。每个请求的处理,并贯穿了一套“候选人的职能” ,以确定哪些服务器是最适合的回应。请求然后代理到该服务器。设施已到位,让你写您自己的动态加载决策算法。一切有关的要求和当前可用的资源可用于决策过 程。

5.图像处理模块

mod_gfx 是一个对图像进行即时处理的 Apache 模块,提供很多灵活的接口,包括:

Resizing

Resampling

Watermarking

Cropping

以后还将添加如下功能:

Add Text

Rotate

Draw Polygons

6. 压缩模块

mod-gzip-disk 是一个使用磁盘进行存储预压缩页面的 Apache 模块,与 mod-gzip 不同的是不需要每次请求的时候重新压缩。

使用方法:

gunzip -c mod_gzip_disk-0.5.tar.gz | tar -xvpf -

cd mod_gzip_disk

sudo make module

7. 音乐模块

mod_musicindex 是一个 Apache 用来处理音频文件的模块,类似 Perl 的 Apache::MP3,支持音频格式包括:MP3, Ogg Vorbis, FLAC, or MP4 / AAC ,可根据不同的音频属性进行排序列表、在线播放、下载、构建播放列表和搜索等,提供 RSS 和 Podcast 输出,支持多 CSS 和包下载。

8.LDAP 认证模块

LDAP 是轻量级目录访问协议,基于 X.500 标准,但更简单,并可根据需要进行定制。mod_psldap 是 Apache 用来执行 LDAP 认证和授权的模块。同时可通过 Web 界面进行简单的 LDAP 管理

9.带宽限制模块

mod_cband 是一个用来限制请求占用带宽的 Apache 模块。

10.CGI V8 引擎包

v8cgi 是一个很小的 C ++ 和 JS 文件集合,允许开发者在服务器端使用 JS 的模块,基本功能包括:IO, GD, mysql, Sockets, templates, FastCGI and Apache module.


安装HTTPD服务

1.在终端输入更新检查命令,sudo apt-get update

2. 在更新完成后(如果不想检查更新,也可直接输入此步)输入:sudo apt-get install apache2

3.完成后,在浏览器输入https://localhost 或者127.0.0.1,如果顺利跳出Apache版本网页,即代表安装成功

4.停止服务:sudo /etc/init.d/apache2 stop

配置httpd服务

查看版本

[root@conling 桌面]# httpd -vServer version: Apache/2.2.15 (Unix)Server built: Aug 2 2013 08:02:15123

httpd的常用的功能特性:

支持路径别名:alias

支持用户认证:基本认证和摘要认证authentication

支持虚拟主机:virtual host 在一个物理主机上提供多个站点

支持负载均衡:是反向代理的一个子特性

支持用户站点:当前用户都可以在自己的家目录下创建自己的站点

支持CGI:Common Gateway Interface 通用网关接口

目录结构

服务脚本:/etc/rc.d/init.d/httpd脚本配置文件路径:/etc/sysconfig/httpd运行目录:/etc/httpd配置文件: 主配置:/etc/httpd/conf/httpd.conf 扩展配置:/etc/httpd/conf.d/*.conf监听的Socket: tcp的80, 443是https/tcp的监听端口在内核中使用小于1023的端口的只有管理员文档根目录:/var/www/htmlCGI目录:/var/www/cgi-bin/12345678910

主配置文件结构

全局配置:对主服务器或虚拟主机都有效,且有些功能是服务器自身工作属性;

主服务器配置:主站属性

虚拟服务器:虚拟主机及属性定义

测试配置和查看的命令

service httpd configtest #测试配置文件有没有语法错误httpd -t #同上httpd -l #当前服务器所使用的模型及开启模块httpd -D DUMP_MODULES #当前服务器支持的模块service httpd reload #重新加载配置文件service httpd restart #重启httpd服务1234567891011

注意:修改配置文件后要重新加载配置文件,修改服务器监听端口后要重启服务

主配置文件的基本配置

配置httpd的工作属性时,指令不区分大小写,但有约定俗成的习惯:

单词的首字母大写;指令的值很有可能区分大小写;有些指令可以重复使用多次;

Listen [IP:]PORT //配置监听的端口,IP为可选项,不写则监听所有接口的端口。 例如:Listen 172.16.3.1:80 ,多个站点时需要监听多个接口。12

指定网站的主目录

DocumentRoot "/var/www/html" 1
Options //配置页面文件的访问属性Indexes #是否允许索引页面文件,建议关闭FollowSymLinks #是否跟随软连接文件SymLinksifOwnerMatch #跟随符号链接,只允许访问运行apache的用户有属主权限的文件ExecCGI: #是否允许执行CGI脚本;12345

基于客户端的访问控制

系统默认允许所有人访问Order #定义allow和deny那个为默认法则;写在后面的为默认法则:写在前面的指令没有显示定义的即受后面的指令控制:Order allow,denyAllow from all #所有人可以访问例:配置允许172.16.0.0/16访问,但不允许172.16.3.1访问Order allow,denyDeny from 172.16.3.1 #禁用一个IP访问Allow from 172.16.0.0/16 #允许一个网段访问123456789

userdir个人站点

# UserDir is disabled by default since it can confirm the presence# of a username on the system (depending on home directory# permissions).##UserDir disabled #注释此项## To enable requests to /~user/ to serve the user's public_html# directory, remove the "UserDir disabled" line above, and uncomment# the following line instead:#UserDir public_html #开启此项//在相应的用户家目录中创建文件public_html 即可实现访问。重新加载配置文件后用:http://HOST/~username/例如:http://172.16.3.1/~centos/1234567891011121314

定义默认主页

DirectoryIndex index.php index.jsp index.html1

日志功能

日志有两类:访问日志(格式自定义)、错误日志

错误日志:ErrorLog "/path/to/error_log_file"访问日志:CustomLog "/path/to/custom_log_file" logformat日志格式:{combined|common|agent}LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combinedLogFormat "%h %l %u %t "%r" %>s %b" commonLogFormat "%{Referer}i -> %U" refererLogFormat "%{User-agent}i" agent1234567891011121314151617

%h #主机名

%l #

%u #用户名

%t #请求到达的时间

%r #请求报文的起始行,方法

%s #

%b #响应报文的大小

%{Foobar}i #显示从发那个站点跳转过来

%{User-Agent}i #用户代理


基于用户访问控制

当你的网站或者站点的某个路径只想让你授权的用户访问时,就可以使用基于用户的访问控制

这里使用htpasswd命令建立用户帐号文件

htpasswd-c #第一次使用-c创建新文件,不是第一次不要使用此选项-m #用户密码使用MD5加密后存放-s #用户密码使用SHA加密后存放-p #用户密码不加密-d #禁用一个账户-e #启用一个账户12345678910111213

例如:

# htpasswd -c -m /etc/httpd/conf/.htpass tom

命令 选项 生成的用户文件路径及文件名 用户名

# htpasswd -m /etc/httpd/conf/.htpass jerry

# 再次添加用户时就不要使用-c选项了,否则会覆盖之前内容先生成

(1)建立用户帐号文件# htpasswd -c -m /etc/httpd/conf/.htpass tom(2)修改主配置文件(直接在主站添加用户认证功能)# vi /etc/httpd/conf/httpd.conDocumentRoot "/www/html" #此时网站根目录就是/www/htmlOptins IndexesAllowOverride AuthConfigAuthName "Oaly for employees." #登录提示信息,可自定义AuthType Basic #认证方式AuthUserFile /etc/httpd/conf/.htpass #用户帐号文件Require valid-user #允许的用户Require 指定可以访问的用户,可以指定单个用户,直接写用户名就可以了,用户名可以写多个用空格分开,也可以指定所有用户就用 valid-user1234567891011121314151617181920212223

对某个目录进行用户访问控制

Apache web服务软件安装启动、负载均衡、反向代理配置

虚拟主机

第一种方式,在主配置文件的末尾,有虚拟主机的模板

<VirtualHost *:8080> DocumentRoot /var/www/blog DirectoryIndex index.html</VirtualHost>Listen 8080//添加以上内容 意为启用监听8080端口,且该端口的网站目录为/var/www/blog,默认文档为index.html.//该方式为通过指定端口的形式来访问不同的站点。12345678

第二种方式,在同一台服务器上创建不同的主机名的虚拟主机。

(1)注释主服务器,添加虚拟主机# DocumentRoot "/www/html" #注释主服务器NameVirtualHost 172.16.3.1:80 #开启虚拟主机DocumentRoot /www/web1 #虚拟主机的网站根目录ServerName web1.lyd.com #主机名DocumentRoot /www/web2ServerName web2.lyd.com(2)给虚拟主机提供测试文件mkdir /www/web{1,2}echo web1.lyd.com > /www/web1/index.htmlecho web2.lyd.com > /www/web2/index.html(3)配置完后用 httpd -t 测试配置文件有没有错误(4)重启服务 service httpd restart(5)验证,修改验证客户端的hosts文件,windows客户端开始-->运行-->输入"c:windowssystem32driversetchosts"用记事本打开并添加以下行172.16.3.1web1.lyd.com172.16.3.1web2.lyd.com12345678910111213141516171819

配置防火墙

#修改防火墙配置: # vi + /etc/sysconfig/iptables #添加配置项 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #重启防火墙 # service iptables restart123456

检查端口状态

netstat -tln //查看相应的端口是否已开启

配置负载均衡

  1. 项目准备

    负载均衡就是把所有用户的访问压力分散到多台服务器上,也可以分散到多个tomcat里。

    现在只是做的一个测试例子,所以apache,tomcat都是装在我的电脑上,我的IP是172.16.X.X

    首先要创建一个web项目,在项目的web.xml中需要加上以下配置,表明该应用可多应用分流处理,能进行Session的复制。

<display-name>TomcatClusterDemo</display-name> <distributable/> 123

把项目放到到tomcat1、tomcat2的webapps目录下。

我的目标是要用两个tomcat(tomcat1,tomcat2)来进行分流,这两个Tomcat的端口、AJP等配置要不一样。

tomcat1的server.xml:

<Server port="10005" shutdown="SHUTDOWN">12
<Connector port="10001" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />123
<Connector port="20001" protocol="AJP/1.3" redirectPort="8443" /> 1
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> 1

tomcat2的server.xml

<Server port="10006" shutdown="SHUTDOWN">12
<Connector port="10002" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />123
<Connector port="20002" protocol="AJP/1.3" redirectPort="8443" />1
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">1
  1. 修改httpd.conf

    在Apache安装目录下找到Apache24/conf/下的 httpd.conf,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。


    LoadModule proxy_module modules/mod_proxy.so

    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

    LoadModule proxy_connect_module modules/mod_proxy_connect.so

    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

    LoadModule proxy_http_module modules/mod_proxy_http.so

    LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

    LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

去掉 Include conf/extra/httpd-vhosts.conf前面的注释#,

在httpd.conf文档最下面加上以下代码:

ProxyRequests Off<Proxy balancer://mycluster>BalancerMember ajp://172.16.X.X:20001/ loadfactor=1 route=jvm1BalancerMember ajp://172.16.X.X:20002/ loadfactor=1 route=jvm2</Proxy> 12345

这里的配置是跟tomcat的server.xml配置对应的。172.16.X.X是tomcat服务器的IP,端口号对应tomcat中server.xml里的ajp的端口号,route对应jvmRoute的配置。

3.用文本编辑器打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上以下代码:

<VirtualHost *:80> ServerName 172.16.X.XServerAlias localhostProxyPass / balancer://mycluster/ stickysession=jsessionid nofailover=OnProxyPassReverse / balancer://mycluster/ErrorLog "logs/lbtest-error.log"CustomLog "logs/lbtest-access.log" common</VirtualHost> 12345678

到这里配置就基本上完成了。

然后写个测试页面test.jsp放到两个tomcat的项目里测试:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Cluster App Test</title></head><body>Server Info:<%out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%><%out.println("<br> ID " + session.getId()+"<br>");// 如果有新的 Session 属性设置System.out.println( "=========test==========");%></table></form></body></html>123456789101112131415161718192021222324

重启apache,tomcat1,tomcat2,

在浏览器输入http://172.16.X.X/test.jsp ,然后多刷新几次。

Apache web服务软件安装启动、负载均衡、反向代理配置

来源丨青峰科技

以上是关于Apache web服务软件安装启动负载均衡反向代理配置的主要内容,如果未能解决你的问题,请参考以下文章

Nginx反向代理负载均衡

nginx反向代理负载均衡功能

25,Nginx反向代理负载均衡

Centos 7配置nginx反向代理负载均衡集群

Apache服务器反向代理,负载均衡,热备份

Nginx下载和安装与启动