Apache使用者認證
1、編輯檔案
[root@centos7 ~]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
#打開網頁時,讓你輸入Apache認證的使用者名,密碼
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.111.com www.example.com
<Directory /data/wwwroot/111.com>
#指定認證的目錄
Allowoverride AuthConfig
#該行相當于打開使用者認證的開關
AuthName "111.com user auth"
#自定義認證的名字
AuthType Basic
#認證類型,一般為basic
AuthUserFile /data/.htpasswd
#指定密碼檔案所在位置(需要手動添加)
require valid-user
#設定需要認證的使用者為“AuthUserFile”中定義的所有可用使用者
</Directory>
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
2、建立認證的使用者名(shenjie),密碼(自己輸入)
htpasswd 第一次建立輸入 -c
第二次就隻輸入 -m
[root@centos7 ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd shenjie
New password:
Re-type new password:
Adding password for user shenjie
3、[root@centos7 ~]# /usr/local/apache2.4/bin/apachectl graceful
4、更改window下的hosts
192.168.3.74 www.111.com
5、通路
<a href="https://s1.51cto.com/oss/201711/09/52c5bb48b8254e4ad1f49f07078b6bb3.png-wh_500x0-wm_3-wmp_4-s_2073748045.png" target="_blank"></a>
6、輸入認證的使用者密碼報錯
<a href="https://s3.51cto.com/oss/201711/09/cca63a22c6c8db03aed8789fb75f3f33.png-wh_500x0-wm_3-wmp_4-s_547744052.png" target="_blank"></a>
7、檢視錯誤日志
提示說權限問題
<a href="https://s5.51cto.com/oss/201711/09/f0c725fcba46f8b4b8e020a351978196.png-wh_500x0-wm_3-wmp_4-s_1474805862.png" target="_blank"></a>
[root@centos7 data]# chmod 755 .htpasswd
8、再次通路
<a href="https://s2.51cto.com/oss/201711/09/ff710948b94519b2cb0d0eac3ad01dc8.png-wh_500x0-wm_3-wmp_4-s_4046699716.png" target="_blank"></a>
htpasswd 用法如下:
-c:=create,建立一個加密檔案
-n:不更新加密檔案,隻将更新後的使用者名密碼顯示在螢幕上
-m:使用MD5算法對密碼進行加密(預設)
-d:使用CRYPT算法對密碼進行加密
-p:不對密碼進行加密,即明文密碼
-s:使用SHA算法對密碼進行加密
-b:在指令行一并輸入使用者名和密碼,而不是根據提示輸入密碼
-D:删除指定使用者
對網站指定的頁面做認證權限
1、新增這些内容
[root@centos7 111.com]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<FilesMatch 123.html>
</FilesMatch>
2、[root@centos7 111.com]# vi 123.html
<h1>this is 123.php</h1>
3、[root@centos7 111.com]# /usr/local/apache2.4/bin/apachectl restart
4、驗證
通路:http://111.com/123.html需要認證;http://111.com則不需要
<a href="https://s1.51cto.com/oss/201711/09/4e47664b45a7915bae62f7f35ee4d5f5.png-wh_500x0-wm_3-wmp_4-s_140632264.png" target="_blank"></a>
<a href="https://s2.51cto.com/oss/201711/09/b1b567934b533f93e5f04e22d7494325.png-wh_500x0-wm_3-wmp_4-s_1066552053.png" target="_blank"></a>
<a href="https://s2.51cto.com/oss/201711/09/905c1b11817d8188323796e8812c60ec.png-wh_500x0-wm_3-wmp_4-s_172408196.png" target="_blank"></a>
域名跳轉
301:永久跳轉
302:臨時跳轉
差別:永久跳轉後的網站會被搜尋引擎判斷為是後面的域名的權重,加大了後面跳轉的權重比例
而臨時跳轉會被判斷是第一個輸入域名的權重;如:通路http://123.com 跳轉到http://abc.com時,搜尋引擎會加大abc.com的權重,比如你在百度上搜尋linux時,權重高的排名越靠前。
<a href="https://s5.51cto.com/oss/201711/09/c27e8a763900d58ac289f1486ad5f760.png-wh_500x0-wm_3-wmp_4-s_671821288.png" target="_blank"></a>
1、[root@centos7 111.com]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<IfModule mod_rewrite.c> #需要rewrite子產品
RewriteEngine on #開啟rewrite功能
RewriteCond %{HTTP_HOST} !^111.com$ #定義rewrite條件:所有非111.com的域名
RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
#規則:^/:表示若是通路http://111.com/123.html這個域名的話,就是指的http://111.com/
(.*):表示123.html ,對應後面的$1
^/(.*)/(.*)$:後面的對應的就是$2
301:永久跳轉;
L是last,即最後一個rewrite規則,如果請求被此規則命中,将不會繼續再向下比對其他規則。
</IfModule>
2、檢視需要開啟rewrite子產品
[root@centos7 111.com]# cat /usr/local/apache2.4/conf/httpd.conf| grep rewrite
LoadModule rewrite_module modules/mod_rewrite.so
3、[root@centos7 111.com]# /usr/local/apache2.4/bin/apachectl graceful
通路:www.example.com跳轉到http://111.com
通路:www.example.com/123.html跳轉到http://111.com/123.html
Apache通路日志
日志在的目錄:/usr/local/apache2.4/logs/
系統自帶的格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
#h表示host來源IP,l表示login使用者,u表示user使用者密碼,t表示time時間,r表示request(行為),s表示status狀态碼,b表示byte大小
#user-agent:使用者代理(浏覽器版本)
#referer:跳轉到目前位置的上一個網址(比如:在一個論壇發的貼,貼資訊是www.123.com,記錄的referer為論壇位址)
1、修改配置檔案日志為combined
[root@centos7 apache2.4]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<a href="https://s1.51cto.com/oss/201711/10/756184f2a2d7f2320ef25bb836f9228f.png-wh_500x0-wm_3-wmp_4-s_379637418.png" target="_blank"></a>
2、[root@centos7 apache2.4]# /usr/local/apache2.4/bin/apachectl graceful
3、看下變化:
<a href="https://s2.51cto.com/oss/201711/10/edf4c78f496998ac4a08a4596fc360a2.png-wh_500x0-wm_3-wmp_4-s_1321481955.png" target="_blank"></a>
預設情況下log日志格式為:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
其中%h 是記錄通路者的IP,如果在web的前端有一層代理,那麼這個%h其實就是代理機器的IP,這不是我們想要的。在這種情況下,
%{X-FORWARDED-FOR}i 字段會記錄用戶端真實的IP。是以log日志改為:
LogFormat "%h %{X-FORWARDED-FOR}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
apache虛拟主機開啟php的短标簽
1、在php.ini中設定
short_open_tag on
2、重新開機httpd
3、設定了之後才能解析:
<?
phpinfo()
?>
否則隻能解析以下的:
<?php
本文轉自 iekegz 51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/1980227,如需轉載請自行聯系原作者