4.13 apache用户认证,跳转和访问日志
Apache用戶認(rèn)證
有的網(wǎng)站在訪問的時(shí)候需要我們輸入賬戶名和密碼,這樣做的好處是增加了安全性,但是用戶體驗(yàn)會(huì)很差。但是在我們?cè)诠ぷ髦羞€需要在一些重要的地方做一些安全認(rèn)證。 首先我們編輯虛擬主機(jī)的配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
我們用第二個(gè)虛擬主機(jī)做實(shí)驗(yàn),然后在 ServerName下面下上如下的內(nèi)容
<Directory /data/wwwroot/123.com> //指定認(rèn)證的目錄(這里的網(wǎng)址要和前面配置文件的網(wǎng)址一定要一致,負(fù)責(zé)不會(huì)成功)
AllowOverride AuthConfig //這個(gè)相當(dāng)于打開認(rèn)證的開關(guān)
AuthName "123.com user auth" //自定義認(rèn)證的名字,作用不大
AuthType Basic //認(rèn)證的類型,一般為Basic,其他類型阿銘沒用過
AuthUserFile /data/.htpasswd //指定密碼文件所在位置
require valid-user //指定需要認(rèn)證的用戶為全部可用用戶
</Directory>
保存退出后我們要?jiǎng)?chuàng)建一個(gè)htpasswd文件,這個(gè)我們需要用apache自帶的命令去生成。
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming(這里我們暫定用戶名為aming,工作中還是要按照實(shí)際情況去定義)(-c,create。是創(chuàng)建 -m是md5加密模式)
按回車后就可以輸入密碼,然后重復(fù)輸入密碼。
如果我們?cè)俅蝿?chuàng)建一個(gè)用戶和他的密碼,那么我們就不用加參數(shù)-c了,以內(nèi)我們已經(jīng)創(chuàng)建過了。
然后我們從新加載做測(cè)試
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl -t(語法檢查)
Syntax OK
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl graceful(重新加載)
curl-x測(cè)試
[root@linletao-001 ~]# curl -x127.0.0.1:80 111.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>(401就表示訪問的內(nèi)容需要做用戶認(rèn)證)
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested. Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>
這樣在查看網(wǎng)站的時(shí)候機(jī)會(huì)出現(xiàn)對(duì)話框,讓你輸入用戶名和密碼
如何在linux下輸入密碼
[root@linletao-001 ~]# curl -x127.0.0.1:80 -uaming:19860127 111.com(-u后面加有戶名,“:”后面接密碼)。
HTTP/1.1 200 OK(當(dāng)密碼正確的時(shí)候,狀態(tài)碼就為200,如果不對(duì),則還是401)
Date: Sun, 15 Apr 2018 12:56:22 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Length: 7
Content-Type: text/html; charset=UTF-8
用戶認(rèn)證還可以針對(duì)某個(gè)文件進(jìn)行認(rèn)證
還可以針對(duì)單個(gè)文件進(jìn)行認(rèn)證<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
<FilesMatch admin.php> 和網(wǎng)站認(rèn)證不同的是,這里用的是FilesMatch而不是Directory,并且開始和結(jié)束都要一致。
AllowOverride AuthConfig
AuthName "123.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
</VirtualHost>
域名跳轉(zhuǎn)
一個(gè)網(wǎng)站會(huì)有多個(gè)域名,比如A可以訪問一個(gè)域名,B也可以訪問一個(gè)域名,而用A訪問時(shí)瀏覽器的網(wǎng)址直接變成了B。這就是域名跳轉(zhuǎn)過程。,那么他有什么作用呢?第一,一個(gè)網(wǎng)站有多個(gè)域名對(duì)SEO有影響,就是百度搜索關(guān)鍵詞的排名有影響,如果把多個(gè)域名集中在一起,以一個(gè)域名為中心,這樣就可以把權(quán)重集中在這個(gè)域名上,所以排名就靠前了。第二,如果之前的老域名不再使用,但搜索域名還留著以前的老域名,這樣用戶會(huì)搜索到我們的老域名并點(diǎn)擊它,需要把老域名做一個(gè)跳轉(zhuǎn)到新域名,這樣用戶搜索時(shí)候,也可以跳轉(zhuǎn)到新域名。具體操作如下
首先打開虛擬主機(jī)機(jī)配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
然后添加配置文件
<IfModule mod_rewrite.c> //需要mod_rewrite模塊支持,這個(gè)模塊在我們編譯apache的時(shí)候用到的一個(gè)moust模塊,這個(gè)模塊會(huì)將大部分模塊編譯進(jìn)來。如果不加,那么這個(gè)模塊也就不會(huì)有了。
RewriteEngine on //打開rewrite功能
RewriteCond %{HTTP_HOST} !^www.111.com$ //定義rewrite的條件,當(dāng)主機(jī)名(域名)不是www.111.com時(shí),會(huì)自動(dòng)跳轉(zhuǎn)到111.com !表示取反 ,這里我們要定義開頭和結(jié)尾,如果不定義開頭和結(jié)尾,只要當(dāng)域名中有111時(shí)就會(huì)認(rèn)為他是正確的域名。所以我們一定要在主域名的前后加上^和$。
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] //定義rewrite規(guī)則,當(dāng)滿足上面的條件時(shí),這條規(guī)則才會(huì)執(zhí)行 301為永久跳轉(zhuǎn),302為臨時(shí)跳轉(zhuǎn),我們一般都用301。
</IfModule>
改完配置文件以后我們需要檢測(cè)語法和重新加載
然后我們還需要到Apache的配置文件中查看LoadModule rewrite_module modules/mod_rewrite.so是否加載,如果被注釋了,那么我們還需要將它重新加載。
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
rewrite_module (shared)(加載成功)
如果修改了,我們?cè)诒4嫱顺龊筮€要進(jìn)行語法檢測(cè)和重新加載。
然后我們檢測(cè)
[root@linletao-001 ~]# curl -x192.168.1.106:80 2111.com.cn -I
HTTP/1.1 301 Moved Permanently
Date: Sun, 15 Apr 2018 14:54:17 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1
狀態(tài)碼為301,現(xiàn)在已經(jīng)成功的跳轉(zhuǎn)了。
apache訪問日志
在cat /usr/local/apache2.4/logs/111.com-access_log有我們需要看的訪問日志
[root@linletao-001 ~]# cat /usr/local/apache2.4/logs/111.com-access_log
192.168.1.106 - - [15/Apr/2018:13:56:22 +0800] "GET HTTP://www.example.com/ HTTP/1.1" 200 7
192.168.1.106 - - [15/Apr/2018:14:19:25 +0800] "GET HTTP://www.789.com/ HTTP/1.1" 200 7
192.168.1.106 - - [15/Apr/2018:20:34:16 +0800] "GET HTTP://www.111.com/ HTTP/1.1" 200 7
上面試我們?cè)L問日志的格式,而這個(gè)格式我們是可以定義格式的,在Apache的主配置文件中搜索LogFormat,在這下面有兩個(gè)格式定義,分別是combined和common,combined內(nèi)容會(huì)更豐富一些,它多了 referer 和 user-agent,我們將編輯虛擬主機(jī)配置文件,將common更改為combined ,重新訪問測(cè)試,查看日志
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
CustomLog "logs/123.com-access_log" combined(以前為common)
</VirtualHost>
轉(zhuǎn)載于:https://blog.51cto.com/13067688/2103775
總結(jié)
以上是生活随笔為你收集整理的4.13 apache用户认证,跳转和访问日志的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: isinstance函数
- 下一篇: Solidworks公司电脑图纸被加密之