xuanhao 发表于 2017-3-2 10:39:26

httpd的简单配置(转)

  一般网站都采用httpd作web服务器提供web页面,本文主要介绍下几个httpd中常用的配置属性和配置方式,当然具体应用更具具体需求来定。
  代理模块配置:
  由于网页动态化,网页的生成基本代理到后端服务器,典型的比如:jetty、tomcat(jservlet系列),iis等。而web服务器需要和这些打交道。
  比较常用的几个模块:
  mod_jk mod_proxy*
  这里介绍下mod_proxy配置实例:



view plain copy

[*]<IfModule mod_proxy.c>
[*]    ProxyRequests Off
[*]    ProxyPreserveHost On
[*]    <Directory proxy:*>
[*]      Order deny,allow
[*]      Allow from all
[*]    </Directory>
[*]    ProxyPassMatch ^/(user)/(.*)$http://localhost:${wmmad_appserver_port} min=5 smax=16 ttl=600 timeout=100
[*]    ProxyPass /monitor/status      http://localhost:${wmmad_appserver_port}/monitor/status.do
[*]    ProxyPass /monitor/default   http://localhost:${wmmad_appserver_port}/monitor/default.do
[*]</IfModule>
  说明:
  1. 开启代理
  2.配置访问权限
  3.过滤代理配置,注意尽量不要把说有的资源请求代理到后端服务器,因为像jetty这些在处理静态资源的能力比httpd弱很多,只有需要动态访问的模块才配置在后端
  请求头配置:
  一般请求头不太配置,不过向最近的apche 0day攻击,能导致服务挂掉的就可能需要用,举例:



view plain copy

[*]<IfModule mod_headers.c>
[*]      Header set X-Content-Type-Options "nosniff"
[*]      Header set X-XSS-protection "1;mode=block"
[*]</IfModule>
  虚拟主机配置:
  有时候我们要配置多个虚拟主机,比如同时提供http和https,这时候就需要配置多个虚拟主机,举例:



view plain copy

[*]NameVirtualHost *:80
[*]<VirtualHost *:80>
[*]    ServerName www.lpnote.net
[*]    DocumentRoot "/home/madding/deploy/htdocs"
[*]    ServerRoot "/home/madding/output"
[*]</VirtualHost>
[*]
[*]NameVirtualHost *:443
[*]<VirtualHost *:443>
[*]    Include /home/madding/deploy/conf/httpd/mod_ssl.conf
[*]    ServerName www.lpnote.net
[*]    DocumentRoot "/home/madding/deploy/htdocs"
[*]    ServerRoot "/home/madding/output"
[*]</VirtualHost>
  开启http和https两个虚拟主机

  rewrite模块配置:
  rewrite模块主要是针对apache自身访问的一些跳转配置,常见的比如首页跳转配置,以及代理服务器外跳,举例:



view plain copy

[*]<IfModule mod_rewrite.c>
[*]      RewriteEngine on
[*]      RewriteRule ^/(index.html?)?$   http://xxx/index.htm
[*]      RewriteRule ^/images/(.*) http://xxx/images/$1
[*]      RewriteRule ^/(offer|member|company)/(.*)http://xxxx/$1/$2
[*]      RewriteCond %{HTTP_USER_AGENT} ^$|^DSB.*$|^Spider.NET$|^AdsBlocker.*$|^REAL.*$|^Mozilla/5\.0\s+SF.*$
[*]      RewriteRule ^/.* http://127.0.0.1/
[*]      RewriteRule ^/member/(+)\.html$http://xxxx/memberId-$1.html
[*]
[*] </IfModule>
  访问主页时跳转到一个指定页面
注意区分一下rewrite和proxy两个概念。
  过期头配置:
  过期头主要作服务器端缓存用,比如图片,样式,脚本等不太变化的内容,减少客户端请求,举例:



view plain copy

[*]<IfModule mod_expires.c>
[*]    ExpiresActive on
[*]    ExpiresDefault A0
[*]    ExpiresByType image/gif A31536000
[*]    ExpiresByType image/jpeg A31536000
[*]    ExpiresByType image/png A31536000
[*]    ExpiresByType text/css A2592000
[*]    ExpiresByType text/js A2592000
[*]    ExpiresByType text/javascript A2592000
[*]    ExpiresByType application/javascript A2592000
[*]    ExpiresByType application/x-javascript A2592000
[*]    ExpiresByType application/x-shockwave-flash A31536000
[*]</IfModule>
  A代表基于创建的过期时间,类型为apache mime中定义的类型。
  日志配置:
  日志主要包括apache 错误日志和访问日志:
  错误日志,日志级别和日志输出位置,举例如下:



view plain copy

[*]LogLevel error
[*]
[*]ErrorLog"|/sbin/cronolog/home/madding/output/logs/apache/apache_error.log.%w"
  本实例主要定义日志采用cronlog重定下到外部目录输出,按天区分。
  该日志主要用来排查一些错误信息,一般比较少用。
  访问日志,访问日志主要包括日志格式和日志输出,举例如如下:



view plain copy

[*]LogFormat "%h %{ORIG_CLIENT_IP}i %l %u %t \"%m /%{HOST}i%U%q %H\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"   cookie_log
[*]CustomLog "|/sbin/cronolog /home/madding/output/logs/cookie_logs/%w/cookie_log" cookie_log env=!XXXLOG
  第一行定义一个错误日志格式,主要包含客户端地址,时间,访问引用等信息。具体可以参考apache文档。
  第二行定义日志输出格式,按天区分,并且日志如果是XXXLOG定义的信息就不记录访问,一般用在信息过滤上。
  该日志是比较重要的日志,记录所有的访问信息,并在排查安全问题、用户行为分析上非常有用。
  本文介绍一些线上部署应用可能用到的配置,当然不同作用的web服务器配置是不同的,
  全作参考
页: [1]
查看完整版本: httpd的简单配置(转)