安装PHP7

1.查看php配置文件信息(phpinfo),php有两个配置文件开发环境和生产环境

  1. [root@localhost php-5.6.30]# /usr/local/php/bin/php -i |less

2.我们将配置文件放到/usr/local/php/etc/php.ini下

  1. [root@localhost php-5.6.30]# cp php.ini-production /usr/local/php/etc/php.ini
  2. [root@localhost php-5.6.30]#

3.安装php7(bz2的压缩包用 tar -jxvf解压)

  1. [root@localhost php-7.1.6]# cd /usr/local/src/^C
  2. [root@localhost php-7.1.6]# wget http://mirrors.sohu.com/php/php-7.1.6.tar.gz^C
  3. [root@localhost php-7.1.6]# tar -zxvf php-7.1.6.tar.gz ^C
  4. [root@localhost php-7.1.6]# cd php-7.1.6/^C
  5. [root@localhost php-7.1.6]#

4.php7配置文件

  1. [root@localhost php-7.1.6]# ./configure --prefix=/usr/local/php7
    --with-apxs2=/usr/local/apache2.4/bin/apxs
    --with-config-file-path=/usr/local/php7/etc
    --with-pdo-mysql=/usr/local/mysql
    --with-mysqli=/usr/local/mysql/bin/mysql_config
    --with-libxml-dir
    --with-gd
    --with-jpeg-dir
    --with-png-dir
    --with-freetype-dir
    --with-iconv-dir
    --with-zlib-dir
    --with-bz2
    --with-openssl
    --with-mcrypt
    --enable-soap
    --enable-gd-native-ttf
    --enable-mbstring
    --enable-sockets
    --enable-exif

5.make && make install

6.查看文件php7模块文件

  1. [root@localhost php-7.1.6]# ls /usr/local/apache2.4/modules/libphp7.so
  2. /usr/local/apache2.4/modules/libphp7.so
  3. [root@localhost php-7.1.6]# du -sh /usr/local/apache2.4/modules/libphp7.so
  4. 37M /usr/local/apache2.4/modules/libphp7.so
  5. [root@localhost php-7.1.6]#

7.发现apache加载了

php5_module (shared)

php7_module (shared)

  1. [root@localhost php-7.1.6]# /usr/local/apache2.4/bin/apachectl -M
  2. AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
  3. Loaded Modules:
  4. core_module (static)
  5. so_module (static)
  6. http_module (static)
  7. mpm_event_module (static)
  8. authn_file_module (shared)
  9. authn_core_module (shared)
  10. authz_host_module (shared)
  11. authz_groupfile_module (shared)
  12. authz_user_module (shared)
  13. authz_core_module (shared)
  14. access_compat_module (shared)
  15. auth_basic_module (shared)
  16. reqtimeout_module (shared)
  17. filter_module (shared)
  18. mime_module (shared)
  19. log_config_module (shared)
  20. env_module (shared)
  21. headers_module (shared)
  22. setenvif_module (shared)
  23. version_module (shared)
  24. unixd_module (shared)
  25. status_module (shared)
  26. autoindex_module (shared)
  27. dir_module (shared)
  28. alias_module (shared)
  29. php5_module (shared)
  30. php7_module (shared)
  31. [root@localhost php-7.1.6]#

8.想要只支持一个php怎么做呢,修改httpd.conf,将php5模块所在的行注释掉

  1. [root@localhost php-7.1.6]# !vim
  2. vim /usr/local/apache2.4/conf/httpd.conf
  3. [root@localhost php-7.1.6]#

Apache和PHP结合

1.解决启动apache提示警告信息文件,编辑apache配置文件将ServerName注释状态打开

2.启动apache,查看httpd服务是否启动成功

  1. [root@localhost php-7.1.6]# /usr/local/apache2.4/bin/apachectl restart
  2. [root@localhost php-7.1.6]# ps aux|grep httpd
  3. daemon 60694 0.0 0.3 435528 3740 ? Sl 09:42 0:00 /usr/local/apache2.4/bin/httpd -k start
  4. daemon 60695 0.0 0.3 435528 3736 ? Sl 09:42 0:00 /usr/local/apache2.4/bin/httpd -k start
  5. daemon 60696 0.0 0.3 435528 3740 ? Sl 09:42 0:00 /usr/local/apache2.4/bin/httpd -k start
  6. root 60779 2.0 0.0 112680 976 pts/5 S+ 09:42 0:00 grep --color=auto httpd
  7. root 99405 0.0 0.6 146616 6988 ? Ss 201 0:07 /usr/local/apache2.4/bin/httpd -k start
  8. [root@localhost php-7.1.6]#

3.查看服务器是否开启80端口,发现并没有开启

  1. [root@localhost php-7.1.6]# iptables -nvL

4.临时将80端口规则加到防火墙中(-I 添加规则、-D 删除规则),发现浏览器可以访问服务器了,telnet也可以连接服务器了

  1. [root@localhost php-7.1.6]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

5.编辑apache配置文件denied改为granted

6.查看配置文件是否有语法错误

  1. [root@localhost local]# /usr/local/apache2.4/bin/apachectl -t
  2. Syntax OK
  3. [root@localhost local]#

7.重新加载配置文件

  1. [root@localhost local]# /usr/local/apache2.4/bin/apachectl graceful
  2. [root@localhost local]#

8.添加配置文件,检查配置文件是否正常。

  1. [root@localhost local]# /usr/local/apache2.4/bin/apachectl -t
  2. Syntax OK
  3. [root@localhost local]# /usr/local/apache2.4/bin/apachectl graceful
  4. [root@localhost local]#

9.可以正常访问服务器

10.支持php

Apache默认虚拟主机

1.编辑httpd.conf文件去掉虚拟主机配置文件#号

2.编辑虚拟主机配置文件并建立相对应的目录

  1. <VirtualHost *:80>
  2. ServerAdmin webmaster@dummy-host.example.com
  3. DocumentRoot "/data/wwwroot/abc.com"
  4. ServerName abc.com
  5. ServerAlias www.abc.com www.123.com
  6. ErrorLog "logs/abc.com-error_log"
  7. CustomLog "logs/abc.com-access_log" common
  8. </VirtualHost>
  9.  
  10. <VirtualHost *:80>
  11. ServerAdmin webmaster@dummy-host2.example.com
  12. DocumentRoot "/data/wwwroot/111.com"
  13. ServerName 111.com
  14. ServerAlias www.example.com
  15. ErrorLog "logs/111.com-error_log"
  16. CustomLog "logs/111.com-access_log" common
  17. </VirtualHost>
  1. [root@localhost ~]# mkdir /data/wwwroot/
  2. [root@localhost ~]# mkdir /data/wwwroot/abc.com
  3. [root@localhost ~]# mkdir /data/wwwroot/111.com
  4. [root@localhost ~]# vim /data/wwwroot/abc.com/index.php
  5. [root@localhost ~]#

3.创建index.php文件并写点代码

  1. [root@localhost ~]# vim /data/wwwroot/111.com/index.php
  2. [root@localhost ~]#

  

4.检查配置文件

  1. [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
  2. Syntax OK
  3. [root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
  4. [root@localhost ~]#

5.curl命令来检测是否可以访问-x 选项可以为CURL添加代理功能,用浏览器看需要本地做host

  1. [root@localhost ~]# curl -x10.21.95.122:80 abc.com
  2. abc.com[root@localhost ~]# curl -x10.21.95.122:80 abce.com
  3. abc.com[root@localhost ~]# curl -x10.21.95.122:80 abcee.com
  4. abc.com[root@localhost ~]# curl -x10.21.95.122:80 www.example.com
  5. 111.com[root@localhost ~]#

6.打开虚拟主机配置文件,主配置文件将失效

Apache用户认证  

1.修改虚拟主机配置文件

  1. <VirtualHost *:80>
  2. ServerAdmin webmaster@dummy-host2.example.com
  3. DocumentRoot "/data/wwwroot/111.com"
  4. ServerName 111.com
  5. ServerAlias www.example.com
  6. <Directory /data/wwwroot/111.com>
  7. AllowOverride AuthConfig
  8. AuthName "Restricted Files"
  9. AuthType Basic
  10. AuthUserFile /data/.htpasswd
  11. Require valid-user
  12. </Directory>
  13. ErrorLog "logs/111.com-error_log"
  14. CustomLog "logs/111.com-access_log" common
  15. </VirtualHost>

2.生成用户密码文件

  1. [root@localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  2. [root@localhost ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd apache
  3. New password:
  4. Re-type new password:
  5. Adding password for user apache
  6. [root@localhost ~]#
  1. [root@localhost ~]# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd apache1
  2. New password:
  3. Re-type new password:
  4. Adding password for user apache1
  5. [root@localhost ~]# cat /data/.htpasswd apache:$apr1$7yblTxbh$nuIrcwIU3nlsee3Aek8jJ.
  6. apache1:$apr1$1bnu4tPX$/u15wjn1vuexrW8ROHC9u0
  7. [root@localhost ~]#
  1. [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
  2. [root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
  3. [root@localhost ~]#

3.curl访问提示401 -I 只看状态码不看返回的内容

  1. [root@localhost ~]# curl -x127.0.0.1:80 111.com -I
  2. HTTP/1.1 401 Unauthorized
  3. Date: Fri, 02 Feb 2018 07:44:52 GMT
  4. Server: Apache/2.4.28 (Unix) PHP/5.6.30
  5. WWW-Authenticate: Basic realm="Restricted Files"
  6. Content-Type: text/html; charset=iso-8859-1
  7.  
  8. [root@localhost ~]#

4.用浏览器访问,编辑客户端host文件,访问111.com

5.用curl方式输入用户名密码方式访问

  1. [root@localhost ~]# curl -x127.0.0.1:80 -uapache:apache 111.com
  2. 111.com[root@localhost ~]#

  

1.filesmatch指定文件认证

域名跳转

1.修改配置文件域名跳转需要在虚拟主机配置中添加别名和一个 rewrite 模块,如下,配置当访问 www.aaa.com 时跳转到 www.test.com

  1. [root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
  2. <VirtualHost *:80>
  3. DocumentRoot "/data/www"
  4. ServerName www.test.com
  5. ServerAlias www.aaa.com
  6. <IfModule mod_rewrite.c>
  7. RewriteEngine on
  8. RewriteCond %{HTTP_HOST} ^www.aaa.com$
  9. RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
  10. </IfModule>
  11. </VirtualHost>

  

  1. [root@localhost ~]# /usr/local/apache2/bin/apachectl -t
  2. [root@localhost ~]# /usr/local/apache2/bin/apachectl graceful

2.扩展:如果有多个域名跳转到一个域名如何配置,如下,配置当访问 www.aaa.com 或访问 www.bbb.com 时跳转到 www.test.com 

  1. [root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
  2. <VirtualHost *:80>
  3. DocumentRoot "/data/www"
  4. ServerName www.test.com
  5. ServerAlias www.aaa.com # 这里配置两个别名
  6. ServerAlias www.bbb.com
  7. <IfModule mod_rewrite.c>
  8. RewriteEngine on
  9. RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR] # 这里末尾要加[OR],表示或者
  10. RewriteCond %{HTTP_HOST} ^www.bbb.com$
  11. RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]
  12. </IfModule>
  13. </VirtualHost>

3.查看是否加载了rewrite模块

  1. [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
  2. [root@localhost ~]# vi /usr/local/apache2.4/conf/httpd.conf
  3. [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
  4. rewrite_module (shared)
  5. [root@localhost ~]#

  

  1. [root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
  2. [root@localhost ~]#

Apache访问日志

常用命令

1.查看apache的进程数 
ps -aux | grep httpd | wc -l 
2.分析日志查看当天的ip连接数 
cat default-access_log | grep "10/Dec/2010" | awk '{print $2}' | sort | uniq -c | sort -nr 
3.查看指定的ip在当天究竟访问了什么url 
cat default-access_log | grep "10/Dec/2010" | grep "218.19.140.242" | awk '{print $7}' | sort | uniq -c | sort -nr 
4.查看当天访问排行前10的url 
cat default-access_log | grep "10/Dec/2010" | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 10 
5.看到指定的ip究竟干了什么 
cat default-access_log | grep 218.19.140.242 | awk '{print $1"\t"$8}' | sort | uniq -c | sort -nr | less 
6.查看访问次数最多的几个分钟(找到热点) 
awk '{print $4}' default-access_log |cut -c 14-18|sort|uniq -c|sort -nr|head

1.查看日志

  1. [root@localhost ~]# cat /usr/local/apache2.4/logs/
  2. 111.com-access_log abc.com-error_log httpd.pid
  3. 111.com-error_log access_log
  4. abc.com-access_log error_log
  5. [root@localhost ~]# cat /usr/local/apache2.4/logs/111.com-access_log
  6. 10.21.95.122 - - [02/Feb/2018:15:19:15 +0800] "GET HTTP://www.example.com/ HTTP/1.1" 200 7
  7. 127.0.0.1 - - [02/Feb/2018:15:44:52 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 401 -
  8. 10.21.95.218 - - [02/Feb/2018:15:48:48 +0800] "GET / HTTP/1.1" 401 381
  9. 10.21.95.218 - apache [02/Feb/2018:15:50:00 +0800] "GET / HTTP/1.1" 401 381
  10. 10.21.95.218 - apache [02/Feb/2018:15:50:26 +0800] "GET / HTTP/1.1" 200 7
  11. 10.21.95.218 - apache [02/Feb/2018:15:50:26 +0800] "GET /favicon.ico HTTP/1.1" 404 209
  12. 127.0.0.1 - apache [02/Feb/2018:15:53:11 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 7
  13. [root@localhost ~]#

2.查看gz压缩包内容

  1. zcat access_log.2018020209.gz |head

3.定义新的日志文件格式common改为combined,日志记录更详细。

4.让配置文件生效

  1. [root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
  2. [root@localhost ~]#

访问日志不记录静态文件

1,当访问很多图片,文档等静态资源的时候,会加大你日志的容量,日志容量占用你磁盘空间后,会出现服务器宕机等很严重的问题,这时需要将日志进行配置优化。当访问网页时不记录这些图片、css、js等信息日志。

  1. SetEnvIf Request_URI ".*\.gif$" img
  2. SetEnvIf Request_URI ".*\.jpg$" img
  3. SetEnvIf Request_URI ".*\.png$" img
  4. SetEnvIf Request_URI ".*\.bmp$" img
  5. SetEnvIf Request_URI ".*\.swf$" img
  6. SetEnvIf Request_URI ".*\.js$" img
  7. SetEnvIf Request_URI ".*\.css$" img
  8. CustomLog "logs/111.com-access_log" combined env=!img

2.重新加载配置文件

  1. [root@bogon ~]# /usr/local/apache2.4/bin/apachectl graceful
  1. [root@bogon ~]# curl -x127.0.0.1:80 111.com/aaaa.jpg <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
  2. <html><head>
  3. <title>404 Not Found</title>
  4. </head><body>
  5. <h1>Not Found</h1>
  6. <p>The requested URL /aaaa.jpg was not found on this server.</p>
  7. </body></html>
  8. [root@bogon ~]#

3.访问不是规则包含的链接被记录到日志,jpg结尾的不记录到日志

  1. [root@bogon ~]# curl -x127.0.0.1:80 111.com/aaaa.jpg1
  1. [root@bogon ~]# tail /usr/local/apache2.4/logs/111.com-access_log
  2. 127.0.0.1 - - [02/Feb/2018:15:44:52 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 401 -
  3. 10.21.95.218 - - [02/Feb/2018:15:48:48 +0800] "GET / HTTP/1.1" 401 381
  4. 10.21.95.218 - apache [02/Feb/2018:15:50:00 +0800] "GET / HTTP/1.1" 401 381
  5. 10.21.95.218 - apache [02/Feb/2018:15:50:26 +0800] "GET / HTTP/1.1" 200 7
  6. 10.21.95.218 - apache [02/Feb/2018:15:50:26 +0800] "GET /favicon.ico HTTP/1.1" 404 209
  7. 127.0.0.1 - apache [02/Feb/2018:15:53:11 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 7
  8. 10.21.95.218 - apache [02/Feb/2018:17:48:08 +0800] "GET / HTTP/1.1" 200 7
  9. 10.21.95.218 - apache [02/Feb/2018:18:11:59 +0800] "GET / HTTP/1.1" 200 7 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
  10. 10.21.95.218 - apache [02/Feb/2018:18:12:00 +0800] "GET / HTTP/1.1" 200 7 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
  11. 127.0.0.1 - - [05/Feb/2018:17:53:08 +0800] "GET HTTP://111.com/aaaa.jpg1 HTTP/1.1" 401 381 "-" "curl/7.29.0"
  12. [root@bogon ~]#

访问日志切割 

 

1.添加配置文件选项rotatelogs -l 切割命令 -l 指定以什么时间格式切割 86400 每天0点生成一个新的文件

2.生成了记录日期格式的日志文件111.com-access_20180206.log

  1. [root@bogon ~]# curl -x127.0.0.1:80 111.com/index.php
  2. 111.com[root@bogon ~]# ls /usr/local/apache2.4/logs/
  3. 111.com-access_20180206.log 111.com-error_log abc.com-error_log error_log
  4. 111.com-access_log abc.com-access_log access_log httpd.pid
  5. [root@bogon ~]#

 

  1. [root@bogon ~]# cat /usr/local/apache2.4/logs/111.com-access_20180206.log
  2. 127.0.0.1 - - [06/Feb/2018:09:14:26 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 404 205 "-" "curl/7.29.0"
  3. 127.0.0.1 - - [06/Feb/2018:09:15:44 +0800] "GET HTTP://111.com/index.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
  4. [root@bogon ~]#  

3.还需要写一个任务计划超过多少天的日志删除减小空间占用crontab

00 * * * * find /applog/app -type f -mtime +1 -exec rm -f {} \;

静态元素过期时间

1.在虚拟主机配置文件中添加expires_module模块配置文件

  1. [root@bogon 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

  

  1. <IfModule mod_expires.c>
  2. ExpiresActive on
  3. ExpiresByType image/gif "access plus 1 days"
  4. ExpiresByType image/jpeg "access plus 24 hours"
  5. ExpiresByType image/png "access plus 24 hours"
  6. ExpiresByType test/css "now plus 2 hours"
  7. ExpiresByType application/x-javascripts "now plus 2 hours"
  8. ExpiresByType application/x-shockwave-flash "now plus 2 hours"
  9. ExpiresDefault "now plus 0 min"
  10. </IfModule>
  1. [root@bogon 111.com]# /usr/local/apache2.4/bin/apachectl -t

2.查看模块是否打开,打开expires模块

  1. [root@bogon 111.com]# /usr/local/apache2.4/bin/apachectl -M|grep expires
  2. [root@bogon 111.com]#

  1. [root@bogon 111.com]# /usr/local/apache2.4/bin/apachectl graceful
  2. [root@bogon 111.com]# /usr/local/apache2.4/bin/apachectl -M|grep expires
  3. expires_module (shared)
  4. [root@bogon 111.com]#

配置防盗链

1.配置文件增加,111.com和aaa.com允许,其他的拒绝

  1. <Directory /data/wwwroot/111.com>
  2. SetEnvIfNoCase Referer "http://111.com" local_ref
  3. SetEnvIfNoCase Referer "http://aaa.com" local_ref
  4. <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">
  5. Order Allow,Deny
  6. Allow from env=local_ref
  7. Deny from all
  8. </filesmatch>
  9. </Directory>

 

  1. [root@bogon ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  2. [root@bogon ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
  3. [root@bogon ~]# /usr/local/apache2.4/bin/apachectl graceful
  4. [root@bogon ~]#

2.直接不能访问,应该ref为空,必须把这个图片放到111.com和aaa.com相关的内容里,来源ref是白名单的情况才能访问。

3.如果想在浏览器直接能访问配置空ref

  1. SetEnvIfNoCase Referer "^$" local_ref

  1. [root@bogon ~]# /usr/local/apache2.4/bin/apachectl graceful

4.可以用curl -e 直接创造referrer

  1. [root@bogon ~]# curl -e "http://111.com/a.jpg" -x127.0.0.1:80 111.com/a.jpg -I
  2. HTTP/1.1 200 OK
  3. Date: Tue, 06 Feb 2018 03:45:11 GMT
  4. Server: Apache/2.4.28 (Unix) PHP/5.6.30
  5. Last-Modified: Sat, 12 Aug 2017 09:29:53 GMT
  6. ETag: "8f393-5568b126b0640"
  7. Accept-Ranges: bytes
  8. Content-Length: 586643
  9. Cache-Control: max-age=86400
  10. Expires: Wed, 07 Feb 2018 03:45:11 GMT
  11. Content-Type: image/jpeg
  12.  
  13. [root@bogon ~]#

访问控制Directory

1.添加配置文件,创建admin目录添加index.php文件

1.看Order后面的,哪个在前,哪个在后

2.如果deny在前,那么就需要看deny from 这句,然后看allow from这一句

3.规则是一条一条的匹配的,不管是deny在前面还是allow在前,都是会生效的。比如例子中。先deny了所有,然后又allow了127.0.0.1,所以127.0.0.1是通过的。

Order allow ,deny

deny from all

allow from 127.0.0.1

这个就会deny所有了,127.0.0.1也会被deny。因为顺序是先allow然后deny,虽然一开始allow了127.0.0.1,但是后面有拒绝了它。

Order allow,deny

deny from all

上面的规则就表示,全部都不能通过

Order deny,allow

deny from all

上面的规则表示,全部都不能通过

Order deny,allow

只有顺序,没有具体规则,表示,全部都可以通行(默认的),因为allow在最后了。

Order allow,deny

这个表示,全部不能通行(默认的),因为deny在最后了。

讲完了allow ,deny我们再来看看具体的应用吧。

(1)某个目录做限制,比如该目录很重要,只允许我们公司的IP访问,当然这个目录可以使网站根目录,也就是整个站点都要做限制了。

<Directory /data/www/>

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Directory>

说明:只允许127.0.0.1访问,其他IP全部拒绝掉。

  1. <Directory "/data/wwwroot/111.com/admin">
  2. Order deny,allow
  3. Deny from all # 表示禁止 1.1.1.1 访问 abc 目录
  4. Allow from 127.0.0.1
  5. </Directory>
  1. [root@bogon 111.com]# mkdir admin
  2. [root@bogon 111.com]# touch index.php
  3. [root@bogon 111.com]# echo 121212 > index.php
  4. [root@bogon 111.com]# cat index.php
  5. 121212
  6. [root@bogon 111.com]#
  1. [root@bogon admin]# curl -x127.0.0.1:80 111.com/admin/index.php -I
  2. HTTP/1.1 200 OK
  3. Date: Tue, 06 Feb 2018 04:55:21 GMT
  4. Server: Apache/2.4.28 (Unix) PHP/5.6.30
  5. X-Powered-By: PHP/5.6.30
  6. Cache-Control: max-age=0
  7. Expires: Tue, 06 Feb 2018 04:55:21 GMT
  8. Content-Type: text/html; charset=UTF-8
  9.  
  10. [root@bogon admin]#

  

  1. [root@bogon admin]# curl -x10.21.95.122:80 111.com/admin/index.php -I
  2. HTTP/1.1 403 Forbidden
  3. Date: Tue, 06 Feb 2018 04:56:25 GMT
  4. Server: Apache/2.4.28 (Unix) PHP/5.6.30
  5. Content-Type: text/html; charset=iso-8859-1
  6.  
  7. [root@bogon admin]#

访问控制FilesMatch

1针对请求的uri去限制,前面安装的discuz论坛,访问后台是admin.php,那我们就可以针对admin.php做限制。

  1. <filesmatch "(.*)admin(.*)">
  2.  
  3. Order deny ,allow
  4.  
  5. Deny from all
  6.  
  7. Allow from 127.0.0.1
  8.  
  9. 说明:这里用到了filesmatch语法,表示匹配的意思。

限定某个目录禁止解析php

1.某个目录下解析PHP,这个很有用,我们做网站安全的时候,这个用的很多,比如某些目录可以上传文件,为了避免上传文件有木马,所以我们禁止这个目录下面的 访问解析PHP。

2.配置文件添加如下代码,禁止upload目录下的php文件解析

  1. <Directory "/data/wwwroot/111.com/upload">
  2. php_admin_flag engine off
  3. <FilesMatch (.*)\.php(.*)>
  4. Order deny,allow
  5. Deny from all
  6. </FilesMatch>
  7. </Directory>
  1. [root@bogon admin]# mkdir /data/wwwroot/111.com/upload
  2. [root@bogon admin]# touch /data/wwwroot/111.com/upload/index.php
  3. [root@bogon admin]# echo 111 > /data/wwwroot/111.com/upload/index.php
  4. [root@bogon admin]#

3.php_admin_flag engine off这个语句就是禁止解析php的控制语句,但只这样配置还不够,因为这样配置之后用户依然可以访问PHP文件,只不过不解析了,但可以下载,用户下载PHP文件也是不合适的,所以有必要在禁止一下。

  1. [root@bogon admin]# curl -x127.0.0.1:80 111.com/upload/index.php -I
  2. HTTP/1.1 403 Forbidden
  3. Date: Wed, 07 Feb 2018 01:41:52 GMT
  4. Server: Apache/2.4.28 (Unix) PHP/5.6.30
  5. Content-Type: text/html; charset=iso-8859-1
  6.  
  7. [root@bogon admin]#

限制user_agent 

  1.   <IfModule mod_rewrite.c>
  2. RewriteEngine on
  3. RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] # 如果要禁止多种浏>览器要在后面加[OR],表示或者 NC 忽略大小写
  4. RewriteCond %{HTTP_USER_AGENT} .*chrome.* [NC] # 这里禁止 curl 和 chrome 访问我们的网站(只是做实验)
  5. RewriteRule .* - [F] # 表示 Forbidden
  6. </IfModule>

 

  1. [root@bogon admin]# /usr/local/apache2.4/bin/apachectl graceful -t
  2. Syntax OK
  3. [root@bogon admin]# /usr/local/apache2.4/bin/apachectl graceful
  4. [root@bogon admin]# curl -x127.0.0.1:80 111.com/upload/index.php -I
  5. HTTP/1.1 403 Forbidden
  6. Date: Wed, 07 Feb 2018 02:33:37 GMT
  7. Server: Apache/2.4.28 (Unix) PHP/5.6.30
  8. Content-Type: text/html; charset=iso-8859-1
  9.  
  10. [root@bogon admin]#

1. -A 模拟useragent

  1. [root@bogon admin]# curl -A "sun sun" -x127.0.0.1:80 111.com/index.php -I HTTP/1.1 200 OK
  2. Date: Wed, 07 Feb 2018 02:35:50 GMT
  3. Server: Apache/2.4.28 (Unix) PHP/5.6.30
  4. X-Powered-By: PHP/5.6.30
  5. Cache-Control: max-age=0
  6. Expires: Wed, 07 Feb 2018 02:35:50 GMT
  7. Content-Type: text/html; charset=UTF-8
  8.  
  9. [root@bogon admin]#

LAMP架构二的更多相关文章

  1. LAMP架构(二)

    第十八次课 LAMP架构(二) 目录 一.Apache默认虚拟主机 二.Apache用户认证 三.域名跳转 四.Apache访问日志 五.访问日志不记录静态文件 六.访问日志切割 七.静态元素过期时间 ...

  2. 末学者笔记--apache编译安装及LAMP架构上线

    apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...

  3. LAMP架构(三)

    第十九课 LAMP架构(三) 目录 一.配置防盗链 二.访问控制Directory 三.访问控制FilesMatch 四.限定某个目录禁止解析php 五.限制user_agent 六.php相关配置 ...

  4. LAMP架构上(一)

    第十七课LAMP架构上(一) 目录 一.LAMP架构介绍 二.MySQL.MariaDB介绍 三.MySQL安装 四.MariaDB安装 五.Apache安装 六.安装PHP5 七.安装PHP7 八. ...

  5. rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构

    rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构 2017年10月01日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~准备阶段~~~~~~~~~~~~~ ...

  6. Linux LAMP架构搭建

    一.部署LAMP基本架构 1.L(linux)A(apache)M(mysql)P(php) 2.稳定版本(mysql5.1,php5.3,apache2.2) 3.安装顺序,mysql-->a ...

  7. 部署LAMP架构及其应用

    部署企业LAMP架构 (一)首先安装Apache服务,具体请见另一篇关于Apache的博文. (二)安装MySQL数据库,具体请见另一篇关于LNMP的博文. (三)构建PHP运行环境 1.安装PHP ...

  8. LAMP架构应用实战—Apache服务介绍与安装01

    LAMP架构应用实战—Apache服务介绍与安装01   一:Apache是什么 Apache是Apache基金会开发的一个高性能.功能强大.安全可靠.灵活的开放源码的WEB服务软件 二:Apache ...

  9. LAMP架构的搭建

    什么是LAMP架构? L : Linux,2.6.18-308.el5(redhat5.8) A :Apache,httpd 2.4.4 M :  mysql-5.5.28  P : php-5.4. ...

随机推荐

  1. Problem X: 双层金字塔

    #include<stdio.h> int main() { int i,j,n,m; while(scanf("%d",&n)!=EOF) { ;i<= ...

  2. 初识Ant-Design

    设计价值观 Ant-Design在设计方面,存在两个大的价值观,自然和确定.自然即顺其自然,在顺应用户的自我感知和行为方式来开发更自然的产品.确定即探索设计规律,并将其抽象成对象,减少设计者的主观干扰 ...

  3. RequireJS 与 SeaJS 的异同

    相同之处 RequireJS 和 SeaJS 都是模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更简单自然. 不同之处 两者的区别如下: 定位有差异.Re ...

  4. Http和Https网络同步请求httpclient和异步请求async-http-client

    原文:https://blog.csdn.net/fengshizty/article/details/53100694 Http和https网络请求 主要总结一下使用到的网络请求框架,一种是同步网络 ...

  5. Android 卡顿优化 4 布局优化实际技巧

    今天分享一些layout布局书写中的一些技巧,希望看过之后你也一样可以写出性价比高的布局.我个人的目标是用最少的View写出一样效果的布局.因为我相信View的数量减少伴随着的就是层级的减少.从而达到 ...

  6. java中copy 一个list集合的方法

    java将一个list里的数据转移到另外一个list,可以使用for语句,一次使用add方法,示例如下: ArrayList list1=new ArrayList(); list1.add(&quo ...

  7. Calico网络策略实践

    因为Kubernetes官方用的flannel无法实现多租户环境下的网络隔离,建立起来的pod之间实际可以相互访问,而Calico可以实现,因此周末找个时间试了一下大概的过程. 前面的kubernet ...

  8. mac设置多个屏幕显示的问题

    点击 设置 -> 显示器 -> 排列,然后拉着菜单在两个显示器之间切换.

  9. zend 环境

    js智能提示: 安装APTANA组件,最新3.0版本 安装地址:http://download.aptana.com/studio3/plugin/install Aptana 3 不能装 2 的 J ...

  10. java实现 tf-idf

    1.前言 TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术.TF意思是词频(Term Frequency), ...