设为首页 收藏本站
查看: 2500|回复: 0

[经验分享] Linux Apache web服务器 配置详细教程

[复制链接]

尚未签到

发表于 2018-11-17 10:30:59 | 显示全部楼层 |阅读模式
原创  
  ExpiresDefault A9030400
  
1 星期
  
  ExpiresDefault A604800
  
3 小时
  
  ExpiresDefault M10800
  
  
  
htm,html,txt类的文件缓存一个小时
  
  header set cache-control "max-age=3600"
  
css, js, swf类的文件缓存一个星期
  
  header set cache-control "max-age=604800"
  
  
  
Axxxx - Access seconds ,表示访问之后经过多少秒
Mxxxx - Modifyed seconds ,表示修改之后经过多少秒(推荐)
  ExpiresActive On
  ExpiresDefault A3600 #表示一小时后更新
  ExpiresByType image/x-icon A86400  #表示1天后更新
  #脚本文件和css样式,我们最好使用 Modification
  ExpiresByType application/javascript M604800 #表示修改完之后,更新之后的1周以后更新
  ExpiresByType text/css M2592000
  #表示修改后如果没有再次修改,那么经过一个星期才允许更新缓存
  ExpiresByType image/gif M604800
  ExpiresByType image/png A604800
  ExpiresByType image/jpeg M604800
  ExpiresByType text/plain A604800
  ExpiresByType application/x-shockwave-flash A604800
  ExpiresByType video/x-flv A604800
  ExpiresByType application/pdf A604800
  ExpiresByType text/html A900
  
  3.11 apache 防盗链
  资源盗链:是不法网站未经过同意通过链接合法网站的图片,视频等资源在自身的网站上展示来达到宣传自已的目的,侵害了合法网站的权益,同时也占用了合法网站的流量和资源
  防盗链手段:利用referer和rewirte实现apache防盗链调用
  防盗链环境说明:

  • 搭建A,B二个网站,A中放置一个正常图片mm.jpg,同时放置一张版本警告图片nolink.jpg,
  • B网站目录下建立一个html,添加图片链接
  • 正常情况下,www.b.com打开html网页的时候,可以正常显示从a盗过来的mm.jpg图片
  • 在A的httpd.conf的配置文件中,添加如下防盗链代码:重启服务,再测试html打开是否正常
  防盗链代码:
  RewrtieEngine on
  RewriteCond %{HTTP_REFERER} !^www.a.com/.$ [NC]
  RewriteCond %{HTTP_REFERER} !^www.a.com$ [NC]
  RewriteCond %{HTTP_REFERER} !^www.c.com/.$ [NC]
  RewriteCond %{HTTP_REFERER} !^www.c.com$ [NC]
  RewriteRule .*.(gif|jpg|swf)$ http://www.a.com/img/nolink.jpg [R,NC]
  3.12 Apache 常用目录学习
  /usr/local/apache/
  ├── bin
  │   ├── ab
  │   ├── apachectl
  │   ├── apxs
  │   ├── checkgid
  │   ├── dbmmanage
  │   ├── envvars
  │   ├── envvars-std
  │   ├── htcacheclean
  │   ├── htdbm
  │   ├── htdigest
  │   ├── htpasswd
  │   ├── httpd
  │   ├── httxt2dbm
  │   ├── logresolve
  │   └── rotatelogs
  ├── conf
  │   ├── extra
  │   │   ├── httpd-autoindex.conf
  │   │   ├── httpd-dav.conf
  │   │   ├── httpd-default.conf
  │   │   ├── httpd-info.conf
  │   │   ├── httpd-languages.conf
  │   │   ├── httpd-manual.conf
  │   │   ├── httpd-mpm.conf
  │   │   ├── httpd-multilang-errordoc.conf
  │   │   ├── httpd-ssl.conf
  │   │   ├── httpd-userdir.conf
  │   │   └── httpd-vhosts.conf
  │   ├── httpd.conf
  ├── htdocs
  │   └── index.html
  /usr/local/apache/conf/extra/
  ├── httpd-autoindex.conf
  ├── httpd-dav.conf
  ├── httpd-default.conf
  ├── httpd-info.conf
  ├── httpd-languages.conf
  ├── httpd-manual.conf
  ├── httpd-mpm.conf
  ├── httpd-multilang-errordoc.conf
  ├── httpd-ssl.conf
  ├── httpd-userdir.conf
  └── httpd-vhosts.conf
  1)  |- /etc/httpd/conf/httpd.conf    (Apache的主配文件)
  2)  |- /etc/httpd/conf.d/*.conf  (  (include文件)
  此目录下放置着.conf的配置文件,这里面的文件在httpd服务运行时被全部加载,所以在维护或修改参数时,为了不修改原配置文件,可以自已定义一个独立的conf文件,方便管理。
include conf.d/welcome.cnf     # 代码格式
  3)  |- /usr/lib64/httpd/modules/
  |- /etc/httpd/modules/
  Apache支持很多的外挂模块,例如PHP以及SSL都是Apache外挂的一种。所有你想要使用的模块文件默认是放置在这个目录当中的。
  4)  |- /var/www/html/  (  (网站根目录)
  5)  |- /var/www/error/
  当因为服务器设置错误,或是浏览器要求的数据错误时,在浏览器上出现的错误信息就以这个目录的默认信息为主
  |- /var/www/icons/
  这个目录提供Apache默认给予的一些小图示,可以随意使用。
  |- /var/www/cgi-bin/
  默认给一些可执行的CGI(网页程序)程序放置的目录。
  6)  |- /var/log/httpd/
  默认的Apache日志文件都放在这里,对于流量比较大的网站来说,这个目录要格外注意,这里的数据文件可能会非常大。
  7)  |- /usr/sbin/apachectl
  这个就是Apache的主要执行文件,这个执行文件其实就是一个Shell Script而已,他可以主动地侦测系统上面的一些设置值,好让你启动Apache时更简单一些。
  8)  |- /usr/sbin/httpd
  这个是主要的Apache二进制执行文件。
  9)  |- /usr/bin/htpasswd  (  (Apache密码保护)
  在当你想要登入某些网页时你需要输入帐号与密码,那Apache本身就提供一个最基本的密码保护方式,该密码的产生就是通过这个命令来实现的。
  3.13 Apache 配置文件权限操作
  3.6.1   参考:京峰Linux高级运维视频资料(2016版)
  3.14 正确设置站点目录文件及目录权限
  为了保证网站不遭受×××***上传及修改文件
  安全的权限

  • 站点所有目录的用户和组都应该为root
  • 站点所有目录权限是默认的755  不能往目录放文件
  • 站点所有文件权限默认是644   不能改文件
  注意:网站服务的用户不能用root
  此权限主要是针对nginx进程用户的访问权限,因为×××主要是用此用户进行×××的
  但是以上设置会对有些网站需要上传文件而没有取限,如何解决呢?
  3.15 Apache 管理
  Httpd –V     # 查看系统本版等详细信息,也包括apache工作模式
  Httpd -l      # 查看工作模式
  /usr/local/apache/bin/apachectl –M  # 查询当前加载的模块
  curl -x192.168.2.135:80 www.a.com -I
  3.16 apache的web认证

  • 修改配置文件httpd.conf  
      Options Indexes FollowSymLinks
      allowoverride authconfig
      order allow,deny
      allow from al
      
  •   在根目录下添加.htaccess文件
      vim /var/www/html/.htaccess
      AuthName "auth"
      AuthType basic
      AuthUserFile /etc/httpd/conf/htpasswd
      require valid-user
  •   使用htpasswd配置用户名和密码
      htpasswd -bc /etc/httpd/conf/htpasswd user1 1234
  • 重启apache  apachectl -k graceful
  3.17 Apaceh ab压力测试
  ab -n 100 -c 10 http://test.com/
  ab常用参数的介绍:
  -n:总共的请求执行数,缺省是1;
  -c: 并发数,缺省是1;
  -t:测试所进行的总时间,秒为单位,缺省50000s
  -p:POST时的数据文件
  -w: 以HTML表的格式输出结果
  [root@localhost html]# ab -n 3000 -c 10 https://121.42.183.93/index.php
  This is ApacheBench, Version 2.3
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
  Benchmarking 121.42.183.93 (be patient)
  Server Software:
  Server Hostname:        121.42.183.93
  Server Port:            443
  SSL/TLS Protocol:       TLSv1/SSLv3,RC4-MD5,2048,112
  Document Path:          /index.php
  Document Length:        274 bytes
  Concurrency Level:      10                        # 并发请求
  Time taken for tests:   471.724 seconds               # 整个测试持续时间
  Complete requests:      259                       # 完成请求数
  Failed requests:        0                          # 失败请求数
  Write errors:           0
  Non-2xx responses:      269
  Total transferred:      123471 bytes                  # 整个场景中的网络传输量
  HTML transferred:       73706 bytes                 # 整个场景中HTML内容传输量
  Requests per second:    0.55 [#/sec] (mean)                 # 吞吐率
  Time per request:       18213.293 [ms] (mean)              # 用户平均请求等待时间  (mean)平均值
  Time per request:       1821.329 [ms] (mean, across all concurrent requests)     # 服务器平均请求处理时间
  Transfer rate:          0.26 [Kbytes/sec] received     # 平均每秒网络上的流量  可以判断是否存在延时
  Connection Times (ms)    网络消耗时间
  min  mean[+/-sd] median   max
  Connect:      130  212 991.5    145   16070
  Processing: 17368 17374  15.7  17373   17622
  Waiting:       41   45   2.8     46      53
  Total:      17499 17586 991.3  17520   33438
  Percentage of the requests served within a certain time (ms)   百分比处理时间(毫秒)
  50%  17520      处理到50%时所花费的时间
  66%  17524
  75%  17526
  80%  17528
  90%  17533
  95%  17539
  98%  17556
  99%  18267
  100%  33438 (longest request)
  3.18 Curl命令
  见nginx章节
  3.19 apache 常见故障
  错误日志
  tail -fn 100 /var/log/httpd/error_log    故障排错
  3.19.1 提示configure: error: APR not found .  Please read the documentation
  ./configure --prefix……检查编辑环境时出现:
  checking for APR... no
  configure: error: APR not found .  Please read the documentation
  解决办法:

  • 事先在编译apache时需要安装apr  arp-util  pcre三个组件
  • 在编译的时候,指定apr  apr-util  pcre路径
  3.19.2 提示Address already in use: make_sock: could not bind to address [::]:80
  [root@localhost ~]# /usr/local/apache/bin/apachectl -k start
  (98)Address already in use: make_sock: could not bind to address [::]:80
  (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
  no listening sockets available, shutting down
  解决方法:有服务占用此端口,用netstat-ntupl找到程序停止它
  3.19.3 提示apache/bin/apxs:/usr/local/perl: bad interpreter: No such file or directory
  apache/bin/apxs:/usr/local/perl: bad interpreter: No such file or directory
  configure: error: no - APXSrefers to an old version of Apache
  ./confiure报错:这是因为apsx文件没有指定perl执行程序位置
  解决:[root@localhost ~]# vi /usr/local/apache/bin/apxs
  #!/replace/with/path/to/perl/interpreter–w  #将第一行修改为#!/usr/bin/perl –w即可
  #添加环境变量
  [root@localhost ~]# echo "PATH=$PATH/:/usr/local/subversion/bin" >> /etc/profile
  [root@localhost ~]# source /etc/profile
  [root@localhost ~]# svnserve –version  #显示版本信息表示正常
  3.19.4 提示You don't have permission to access / on this server.
  修改根目录权限
  
  AllowOverride none
  Require all granted(denied)
  

  3.19.5 httpd: Could not>  (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
  原因:找不到完整的FQDN域名
  解决方法: 修改httpd.conf配置
  #ServerName 127.0.0.1:80


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636122-1-1.html 上篇帖子: Linux 编译安装apache及应用 下篇帖子: Apache配置https证书并跳转
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表