天天看點

Apache使用者認證、域名跳轉、Apache通路日志

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

    &lt;FilesMatch 123.html&gt;

    &lt;/FilesMatch&gt;

2、[root@centos7 111.com]# vi 123.html 

&lt;h1&gt;this is 123.php&lt;/h1&gt;

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

    &lt;IfModule mod_rewrite.c&gt;  #需要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規則,如果請求被此規則命中,将不會繼續再向下比對其他規則。

    &lt;/IfModule&gt;

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\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

    LogFormat "%h %l %u %t \"%r\" %&gt;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\" %&gt;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\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

apache虛拟主機開啟php的短标簽

1、在php.ini中設定

short_open_tag on

2、重新開機httpd

3、設定了之後才能解析:

&lt;?

phpinfo()

?&gt;

否則隻能解析以下的:

&lt;?php

本文轉自 iekegz 51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/1980227,如需轉載請自行聯系原作者