apache

转载 2013年12月05日 10:42:41

apache可以理解为一个非常灵活可配置的高性能web服务框架。

包括最前面处理http请求的MPM可配:perfork, worker, event

包括可动态加载若干第三方动态库,完成插件任务:mod_proxy, mod_ssl, mod_cache, mod_rewrite  ......

包括上层应用通过hook机制,实现自己的请求handler,并通过mod加载机制加载。


高性能体现在:

1、worker采用进程+线程动态可调整的策略,每个请求会被委派到某个空闲进程的某个线程。类似动态可扩展的BIO

      event采用事件驱动模式(epoll),主线程监听socket事件,若干子进程和子线程,执行具体业务逻辑。类似NIO


2、通过mmap完成父子进程的通信


3、通过sendfile处理静态文件,直接在操作系统内核将静态文件从磁盘发送到网络配适层,绕过了内核到用户层在到内核的数据copy


============== install ======================


make distclean && ./configure --prefix=/home/admin/apache --with-mpm=worker --enable-modules=all --enable-ssl --enable-proxy && make && make install

compile all modules as static in default


--enable-modules=all , if not set, some modules like mod_expire will not load

--enable-modules-shared=all, compile all modules as xx.so, and need to LoadModule in config

--enable-ssl, --enable-proxy 需要额外开启

--enable-proxy 会开启全部proxy模块,包括:mod_proxy_ajp, mod_proxy_http, mod_proxy_ftp, mod_proxy_balancer, mod_proxy_scgi


/apache/bin/apachectl -f /home/admin/xx/httpd.conf -t     ( check conf syntax)

/apache/bin/apachectl -l (list all modules)


================= apr =====================

对于httpd-2.4+,需要升级linux下面的apr环境

下载:http://apr.apache.org/download.cgi

# tar -zxvf apr-1.4.2.tar.gz
#cd apr-1.4.2
#./configure --prefix=/usr/local/apr
#make
#sudo make install

#tar -zxvf apr-util-1.3.9.tar.gz

#cd apr-util-1.3.9

#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make
#sudo make install

下载:http://sourceforge.net/projects/pcre
#unzip -o pcre-8.10.zip
#cd pcre-8.10
#./configure --prefix=/usr/local/pcre
#make
#sudo make install



================= rewrite ==================

http://httpd.apache.org/docs/current/mod/mod_rewrite.html


RewriteEngine on

RewriteCond %{REQUEST_URI} !^/images/

RewriteCond %{REQUEST_URI} !^/styles/
RewriteRule ^/8081.html http://10.249.192.168:8081/8081.html [R]   ## means 302 redirect to other server

RewriteRule ^/8081.html http://10.249.192.168:8081/8081.html [P]   ## means forward to other server, need mod_proxy in apache,不支持https的代理


================= mod_proxy ==================

proxy转发后,ip地址变为apache主机的ip,源地址ip存储在request header中: x-forwarded-for = 10.22.9.195

SSLProxyEngine On
ProxyRequests off  ( 停止正向代理)
ProxyPass /images ! (不往此处转发)
ProxyPass /styles !
ProxyPass /scripts !
ProxyPass / https://10.249.192.168:54602/

ProxyPassReverse / https://10.249.192.168:54602/ (必须加,否则在子系统中的redirect跳转地址就不对)

ProxyPass /openapi  https://10.249.192.168:54802/openapi (可以将部分url定向到另一个back server)

ProxyPassReverse /openapi  https://10.249.192.168:54802/openapi


<IfModule worker.c>

     StartServers     10  ( 启动时的httpd进程数)
     MaxClients       1024 (最大并发连接)
     MinSpareThreads  25
     MaxSpareThreads  75
     ThreadsPerChild  64 (每个进程的最大线程数)
     ServerLimit      75 (进程最大数量)
</IfModule>


===================== mod_jk =====================


wget ...tomcat-connectors-1.2.35-src.tar.gz

tar -zxvf tomcat-connectors-1.2.35-src.tar.gz

cd tomcat-connectors-1.2.35-src/native

./configuration --with-apxs=/home/admin/apache/bin/apxs

make

make install

// find mod_jk.so in apache/modules


通过AJP协议和tomcat进行连接,一个apache可以配置映射多个tomcat。ajp协议下,tomcat接收到的ip为源地址ip。

mod_jk.conf配置:

LoadModule jk_module /apsara/alimail/webdeploy/aliyunid/aliyunid_apache_running/modules/mod_jk_for_httpd_2.2.15.so
JkLogFile "|/apsara/alimail/webdeploy/aliyunid/httpd-2.2.15/bin/rotatelogs /apsara/alimail/webdeploy/aliyunid/aliyunid_apache_runnin
g/output/logs/mod_jk.log 86400"


JkLogLevel error
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardURICompatUnparsed
JkOptions +ForwardDirectories
JkMountCopy All


JkShmFile /apsara/alimail/webdeploy/aliyunid/aliyunid_apache_running/output/logs/jk.shm


JkMount /openapi/* openapi
JkMount /innerapi/* openapi
JkMount /oauth/request_token openapi
JkMount /oauth/access_token openapi


JkMount /* webpage
JkUnMount /images/* webpage
JkUnMount /styles/* webpage
JkUnMount /scripts/* webpage


JkWorkersFile /apsara/alimail/webdeploy/aliyunid/aliyunid_apache_running/conf/workers.properties


workers.properties:

worker.template.type=ajp13
worker.template.socket_timeout=60
worker.template.connect_timeout=60000
worker.template.reply_timeout=60000


worker.list=openapi,webpage


worker.openapi.type=lb # load balancer
worker.openapi.balance_workers=openapi0,openapi1


worker.webpage.type=lb
worker.webpage.balance_workers=webpage0,webpage1


worker.openapi0.port=54990
worker.openapi0.host=10.249.20.48
worker.openapi0.reference=worker.template


worker.openapi1.port=54990
worker.openapi1.host=10.249.26.45
worker.openapi1.reference=worker.template


worker.webpage0.port=54700
worker.webpage0.host=10.249.20.48
worker.webpage0.reference=worker.template


worker.webpage1.port=54700
worker.webpage1.host=10.249.26.45
worker.webpage1.reference=worker.template




tomcat connector配置:

<Connector port="__MY_JBOSS_AJP_PORT__" address="${jboss.bind.address}"
         backlog="256"
         maxThreads="300"
         emptySessionPath="true"
         enableLookups="false"
         connectionTimeout="600000"
         disableUploadTimeout="true"
         protocol="AJP/1.3"
         URIEncoding="UTF-8"

         maxPostSize="6291456" />


转自:http://blog.csdn.net/cnhzgb/article/details/6795144

HTTP/Apache 错误代码汇总

http 状态码基本上可以分为 5 类: 1xx 为消息类,该类状态代码用于表示服务器临时回应。 100 Continue 表示初始的请求已经被服务器接受,浏览器应当继续发送请求的...
  • php_younger
  • php_younger
  • 2016年10月11日 15:47
  • 829

Apache的在线升级

升级Apache到最新版本,本来并不复杂,但是因为涉及到不能停止现有的Apache实例的运行,因此要小心翼翼的做。 大致分成三步: 编译新的Apache, 配置新的Apache, ...
  • qq_36345367
  • qq_36345367
  • 2017年05月27日 17:11
  • 431

服务器架设笔记——Apache模块开发基础知识

本文简略介绍了Apache插件所涉及的基础知识。
  • breaksoftware
  • breaksoftware
  • 2015年02月18日 19:33
  • 3822

修改apache默认字符编码--在页面中显示乱码

apache打开网页乱码,修改apache默认字符集的方法如下: 打开apache配置文件httpd.conf,Windows下的apache配置文件路径一般为D:\Program Files\Ap...
  • tanzugan
  • tanzugan
  • 2012年01月04日 11:15
  • 13203

apache参数详解

apache参数详解 Linux Apache Web 服务器终极教程作者:佚名 文章来源:internet                           Apache的主要特征是:  .  可...
  • lxholding
  • lxholding
  • 2007年09月26日 13:08
  • 1475

Apache组织一级开源项目清单

1.      HTTP Server: HTTP Server是目前最流行的HTTP服务器软件之一。其优势主要在于快速、可靠、可通过简单的API扩展,Perl/Python解释器可被编译到服务器中...
  • lky5387
  • lky5387
  • 2014年06月26日 13:10
  • 4804

apache 页面缓存机制,图片 缓存 (mod_expires)

#LoadModule expires_module modules/mod_expires.so (去掉#号) 我把配置信息写到 .htaccess文件中 ExpiresActive...
  • u013791858
  • u013791858
  • 2015年12月11日 10:16
  • 1237

Apache中的配置指令概述

 //本文是《Apache源代码全景分析》第二卷《体系结构和核心模块》中的第八章《配置文件管理》的草稿部分中,主要描述Apache中的指令概念,在后续的章节中我们将继续深入Apache中的配置文件的处...
  • tingya
  • tingya
  • 2006年09月25日 23:03
  • 13875

Apache静态网站的搭建

摘要:先简单介绍apache简单配置和相关文件。再说明Apache搭建的几种方式网站,个人用户主页功能,虚拟网站主页功能(基于IP hostname port)和Apache网站的访问限制。...
  • HzSunshine
  • HzSunshine
  • 2016年12月01日 21:17
  • 2511

apache如何解决跨域资源访问

很多时候,大中型网站为了静态资源分布式部署,加快访问速度,减轻主站压力,会把静态资源(例如字体文件、图片等)放在独立服务器或者CDN上,并且使用独立的资源域名(例如res.test.com) 但是在实...
  • ownfire
  • ownfire
  • 2015年07月01日 10:40
  • 26893
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:apache
举报原因:
原因补充:

(最多只允许输入30个字)