Apache功能配置:訪問控制、日志分割; 部署AWStats日志分析工具

目錄

保持連接

訪問控制

只允許指定ip訪問

拒絕指定主機其他正常訪問

用戶授權

日志格式

日志分割

操作步驟

使用第三方工具cronolog分割日志

AWStats日志分析

操作步驟

訪問AwStats分析系統


保持連接

Apache通過設置配置文件httpd-default.conf中相關的連接保持參數來開啟與控制連接保持功能。

使用vim /usr/local/httpd/conf/extra/httpd-default.conf命令打開apache的默認配置文件

注意在httpd的主配置文件中將httpd-default.conf 的in ????????clude前的注釋符去掉,讓主配置文件包含該配置文件

參數

說明

KeepAlive

保持連接功能,OFF表示關閉,ON表示打開,可以根據網站的并發請求量決定是否打開,即在高并發時打開連接保持功能,并發量不高時關閉此功能。

MaxKeepAliveRequests

用于設置在一次長連接中可以傳輸的最大請求數量,超過此最大請求數量就會斷開連接,最大值的設置決定于網站中網頁的內容,一般設置數量會多于網站中所有的元素。

KeepAliveTimeout

表示一次連接多次請求之間的最大間隔時間,即兩次請求之間超過該時間連接就會自動斷開,從而避免客戶端占用連接資源。

開啟httpd服務后,在訪問http服務時,在網頁中按下F12,打開開發人員工具,在選中網絡窗口,使用Ctrl + R刷新網頁

選中主機ip,可以看到標頭下的響應標頭的信息,顯示Keep-Alive已經開啟,相關參數是timeout=5, max=97

現在來到默認配置文件(/usr/local/httpd/conf/extra/httpd-default.conf)中修改超時時間和最大連接數

保存并退出,使用systemctl restart httpd重啟服務

此時來到瀏覽器刷新,可以看到最大連接數為90


訪問控制

使用vim /usr/local/httpd/conf/httpd.conf命令進入httpd主配置文件

在末行模式下搜索Directory(:/Directory)可以找到單元,這個單元就規定了允許或拒絕用戶訪問哪些目錄(訪問權限)

<Directory "/usr/local/httpd/htdocs"># 省略注釋Options Indexes FollowSymLinksAllowOverride NoneRequire ip 192.168.10.102 # 修改為ip地址
#   Require ip 192.168.10.0/24 規定為網段也可以
</Directory>

圖中的Require all denied規定了用戶全都不能訪問系統的根目錄

往下翻一點,可以看到另一個Directory單元,這個單元中就規定了用戶可以訪問/usr/local/httpd/htdocs目錄

只允許指定ip訪問

<Directory "/usr/local/httpd/htdocs"># 省略注釋Options Indexes FollowSymLinksAllowOverride NoneRequire ip 192.168.10.102 # 修改為ip地址
#   Require ip 192.168.10.0/24 規定為網段也可以
</Directory>

修改后需要重啟服務

然后打開一臺帶有圖形化界面的虛擬機,比如win10或win11,或者使用第二臺Linux主機,通過curl命令也可以

將其ip修改為192.168.10.102,訪問Web服務器(192.168.10.101),可以看到訪問是通過的

?

使用宿主機訪問也不能正常訪問了,403狀態碼

拒絕指定主機其他正常訪問

<Directory "/usr/local/httpd/htdocs"># 省略注釋Options Indexes FollowSymLinksAllowOverride None<RequireAll>Require all granted    # 允許所有主機訪問Require not ip 192.168.10.102    # 拒絕192.168.10.102訪問</RequireAll>
</Directory>

此時除了剛剛開啟的102主機其他的都可以正常訪問Web服務器

用戶授權

驗證授權的方式變成賬號密碼,需要用到Apache自帶的htpasswd工具生成

使用htpasswd命令生成文件,第一次創建需要加-c選項,后續就不需要加-c了

通過cat命令可以查看到生存的用戶和密鑰

[root@localhost ~]# cat /usr/local/httpd/conf/.example 
tom:$apr1$9E2tS/4/$28pw.i5heCsVXYY9TA7Og/
jerry:$apr1$dQtbTAQw$w3QYXr8E62MzoYnNbUEiC1

再修改配置文件(/usr/local/httpd/conf/httpd.conf

<Directory "/usr/local/httpd/htdocs"># 省略注釋Options Indexes FollowSymLinksAllowOverride NoneAuthName "abc" # 指定授權域的名稱或描述AuthType Basic # 指定了認證的類型為 Basic,即基本認證方式。AuthUserFile /usr/local/httpd/conf/.example # 指定了存儲用戶賬號和密碼的文件的路徑Require valid-user # 要求訪問受保護資源的用戶必須提供有效的用戶名和密碼。
</Directory>

Basic:指定了認證的類型為 Basic,即基本認證方式。Basic Authentication 是一種簡單的認證方式,客戶端(通常是瀏覽器)會將用戶名和密碼以明文形式通過 HTTP 的 Authorization 頭部發送給服務器。

最后在訪問Web服務器時,就會被要求輸入賬號和密碼


日志格式

打開Apache的主配置文件(/usr/local/httpd/conf/httpd.conf),在末行模式下搜索Log(:/Log)

可以看到httpd提供的兩種日志格式,第一種是combined(組合格式),第二種是common(通用格式)

在下方可以看到access_log(訪問日志)用的是通用格式來生成日志的,這里我們改成組合格式

?

改為組合模式

保存并退出,重啟httpd服務,再次訪問Web服務器。然后cat查看/usr/local/httpd/logs/access_log文件

可以看到最后一行的組合日志格式生成的日志

192.168.10.1 - - [10/Jul/2024:10:19:23 +0800] "GET / HTTP/1.1" 200 154 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"

參數

說明

&h

客戶端的IP地址或主機名

%l

客戶端的標識符,如果啟用了標識符(如通過?IdentLookups?配置),否則為?-

%u

請求時客戶端提供的用戶名(如果是用戶認證登錄,就顯示為用戶),否則顯示?-

%t

請求的時間戳

\"%r\"

客戶端請求的第一行,包括 HTTP 方法、請求路徑和協議

這里的 \ 是轉義符

%>s

服務器返回給客戶端的HTTP狀態碼

%b

傳輸給客戶端的字節數,不包括HTTP頭部的大小

\"%{Referer}i\"

請求報文中首部 "referer" 的值;即從哪個頁面中的超鏈接跳轉至當前頁面的,防止盜鏈,i就是首部的意思,Referer是鏈接到此URL的頁面。

i是首部的意思,即請求頭

\"%{User-Agent}i\"

此項是客戶端提供的瀏覽器識別信息,i是首部的意思,即請求頭

&I

服務器接收得字節數,需要啟用mod_logio模塊。

%O

服務器發送得字節數,需要啟用mod_logio模塊。


日志分割

日志分割需要使用Apache自帶的日志分割工具rotatelogs

操作步驟

依舊打開httpd主配置文件

將剛才修改日志格式的行注釋掉,使用CustomLog指定日志記錄的方式

#CustomLog "logs/access_log" combined
CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined

參數

說明

|

將生成的日志數據傳遞給一個外部程序進行處理或存儲

/usr/local/bin/rotatelogs

指定日志分割工具的路徑

-l /var/log/httpd/access_%Y%m%d.log

指定了日志文件的格式和存儲位置

-l:用于指定日志文件的命名模式和路徑

%Y%m%d

表示將日期格式化為年(四位數)、月、日,例如?access_20240710.log

86400

日志文件的滾動時間間隔,單位是秒。這里代表一天的秒數,即每隔一天就會生成一個新的日志文件。

保存并退出,重啟服務。手動在指定的/var/log下創建httpd目錄

再通過瀏覽器訪問Web服務器,然后去/var/log/httpd/下查看access_20240710.log文件

[root@localhost httpd]# cat access_20240710.log 
192.168.10.1 - - [10/Jul/2024:10:40:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
192.168.10.1 - - [10/Jul/2024:10:40:07 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
192.168.10.1 - - [10/Jul/2024:10:40:08 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"

使用第三方工具cronolog分割日志

將源代碼軟件包拖入XShell,使用tar zxvf命令解壓,進入解壓目錄

使用 ./configuremake && make instll 安裝

進入/usr/local/sbin/目錄下可以看到自動將命令安裝進sbin目錄下了

[root@localhost cronolog-1.6.2]# cd /usr/local/sbin/
[root@localhost sbin]# ls
cronolog  cronosplit

進入httpd主配置文件,修改日志記錄方式

#CustomLog "logs/access_log" combined
CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/my_access_%Y%m%d.log" combined

保存并退出,重啟服務。

再通過瀏覽器訪問Web服務器,然后去/var/log/httpd/下查看my_access_20240710.log文件

[root@localhost httpd]# cat my_access_20240710.log 
192.168.10.1 - - [10/Jul/2024:10:48:30 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"

實驗完成后把日志記錄方式改為原來的,用于下一步日志分析的實驗

CustomLog "logs/access_log" combined
#CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/my_access_%Y%m%d.log" combined

AWStats日志分析

Awstats是一個免費非常簡潔而且強大有個性的網站日志分析工具。

操作步驟

將源代碼軟件包拖入XShell,使用tar zxvf命令解壓,然后使用mv awstats-7.7 /usr/local/awstats命令將解壓出的目錄移動到/usr/local/下并將目錄名重命名為awstats

cd到/usr/local/awstats目錄下,再進入tools子目錄,可以看到這里存放著工具集

[root@localhost ~]# cd /usr/local/awstats/
[root@localhost awstats]# ls
docs  README.md  tools  wwwroot
[root@localhost awstats]# cd tools/
[root@localhost tools]# ls
awstats_buildstaticpages.pl  dolibarr            maillogconvert.pl   xslt
awstats_configure.pl         geoip_generator.pl  nginx
awstats_exportlib.pl         httpd_conf          urlaliasbuilder.pl
awstats_updateall.pl         logresolvemerge.pl  webmin

在該目錄下使用awstats_configure.pl初始化

[root@localhost tools]# ./awstats_configure.plEnter full config file path of your Web server.
Example: /etc/httpd/httpd.conf    # 使用yum安裝的位置
Example: /usr/local/apache2/conf/httpd.conf    # 使用源代碼可能安裝的位置
Example: c:\Program files\apache group\apache\conf\httpd.conf    # Windows系統下可能安裝apache的安裝路徑
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf    # 填入Apache的配置文件路徑,回車-----> Need to create a new config file ?    # 是否需要創建一個新的配置文件
Do you want me to build a new AWStats config/profile    # 是否希望它創建一個新的AWStats配置文件或配置文件模板
file (required if first install) [y/N] ? y-----> Define config file name to create    # 要求定義要創建的配置文件的名稱
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.tom.com      # 輸入想命名的AWStats配置文件的名稱-----> Define config file path    # 設置配置文件的路徑
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
> # 這里使用默認路徑 所以直接回車Press ENTER to continue...
# 回車,以繼續
Press ENTER to finish...
# 回車,以結束

修改httpd配置文件,在命令模式下按下大寫字母G,來到文件末尾,修改<Directory>標簽為允許全部客戶端訪問該目錄下的文件和腳本

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot">Options NoneAllowOverride NoneRequire all granted
</Directory>

編輯awstats初始化后生成的配置文件,然后創建存儲AWStats數據的目錄

[root@localhost tools]# vim /etc/awstats/awstats.www.tom.com.conf
在第50行,改為httpd路徑位置
Logile="/usr/local/httpd/logs/access_log"
在第220行,改為如下內容
DirData="/var/lib/awstats"    # 指定了AWStats存儲數據文件的目錄路徑
[root@localhost awstats]# mkdir /var/lib/awstats

編輯當前用戶的 cron 任務

[root@localhost tools]# crontab -e
*/2 * * * * /usr/local/awstats/tools/awstats_updateall.pl now*/2:表示每隔2分鐘執行一次后面的命令
*:通配符,表示所有可能的值
/usr/local/awstats/tools/awstats_updateall.pl now:是要執行的命令或者腳本

再修改httpd配置文件,在命令模式下按下大寫G來到文件末尾,在文件末尾添加IfModule標簽加載不同模塊,最后重啟服務

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
<IfModule !mpm_prefork_module>LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>LoadModule cgi_module modules/mod_cgi.so
</IfModule>重啟服務
[root@localhost tools]# systemctl restart httpd

訪問AwStats分析系統

在瀏覽器訪問站點:http://192.168.10.101/awstats/awstats.pl?config=www.tom.com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43242.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43242.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Java的科大訊飛大模型API調用實現

寫在前面&#xff1a;因為現在自己實習的公司新拓展的一個業務是結合AI的低代碼平臺&#xff0c;我負責后端的開發&#xff0c;之前一直都是直接使用gpt或者文心一言等ui界面來直接使用大模型&#xff0c;從來沒有自己調接口過&#xff0c;所以本文記錄一下自己第一次使用大模型…

源代碼防泄漏的正確方法

為了保護公司的源代碼不被泄露&#xff0c;IT企業可以采取一系列嚴格的安全措施。這些措施涵蓋技術手段、管理策略和操作流程&#xff0c;形成多層次的防護體系做到源代碼防泄漏工作。 技術手段 1、源代碼加密&#xff1a; 采用高級加密標準&#xff08;AES&#xff09;或其他…

【QT】QComboBox允許輸入查詢,且不區分大小寫

目錄 0.簡介 1.環境 2.詳細代碼 3.參考 0.簡介 項目需求&#xff0c;原本有一個下拉框&#xff0c;但是條目太多&#xff0c;不好搜索&#xff0c;所以用戶要求可以輸入查找 修改前 &#xff1a; 修改后&#xff1a; 1.環境 windows11 vs-code qt5.12 2.詳細代碼 QComboB…

中小企業和數智化的距離,只差一塊華為IdeaHub

每次談及中小企業數智化的話題&#xff0c;被提到最多的總是“三不”難題&#xff0c;即不想轉、不敢轉、不會轉。 為了破解這一困局&#xff0c;政府多次在工作報告中提到“深入開展中小企業數字化賦能專項行動”&#xff0c;并在各地為中小企業創新提供政策支持。此外&#…

Android --- Kotlin學習之路:基礎語法學習筆記

------>可讀可寫變量 var name: String "Hello World";------>只讀變量 val name: String "Hello World"------>類型推斷 val name: String "Hello World" 可以寫成 val name "Hello World"------>基本數據類型 1…

MD5加密和注冊頁面的編寫

MD5加密 1.導入包 npm install --save ts-md5 2.使用方式 import { Md5 } from ts-md5; //md5加密后的密碼 const md5PwdMd5.hashStr("123456").toUpperCase(); 遇見的問題及用到的技術 注冊頁面 register.vue代碼 <template><div class"wappe…

從零開始學習嵌入式----Linux 命令行,常用命令速記指南

目錄 一、文件操作 二、文本操作 三、系統管理 四、網絡操作 五、其他常用命令 六、學習建議 在 Linux 世界里&#xff0c;命令行就像一把瑞士軍刀&#xff0c;掌握了它&#xff0c;你就能游刃有余地操控整個系統。但面對茫茫多的命令&#xff0c;新手往往會感到無所適從…

關于Python中的字典你所不知道的七個技巧

01 引言 Python是我最喜歡的編程語言之一&#xff0c;它向來以其簡單性、多功能性和可讀性而聞名。 字典作為Python中最常使用的數據類型&#xff0c;大家幾乎每個人都或多或少在項目中使用過字典&#xff0c;但是字典里有一些潛在的技巧可能并不是每個同學都會用到。 在本文…

相同含義但不同類型字段作為join條件時注意事項

假設表A和表B中都有表示學號的stu_id字段&#xff0c;但該字段在表A和表B中類型分別為bigint和string。當直接通過該字段進行join時&#xff0c;一般情況下可以得到我們預期的結果。 select a.stu_id from a as r join b as l on r.stu_id l.stu_id 但是如果學號長度較長的…

【UE5.1 角色練習】16-槍械射擊——瞄準

目錄 效果 步驟 一、瞄準時拉近攝像機位置 二、瞄準偏移 三、向指定方向射擊 四、連發 效果 步驟 一、瞄準時拉近攝像機位置 打開角色藍圖&#xff0c;在事件圖表中添加如下節點&#xff0c;當進入射擊狀態時設置目標臂長度為300&#xff0c;從而拉近視角。 但是這樣切…

勇攀新高峰|暴雨信息召開2024年中述職工作會議

7月8日至9日&#xff0c;暴雨信息召開2024年中述職工作會議&#xff0c;總結回顧了上半年的成績和不足&#xff0c;本次會議采用線上線下的方式舉行&#xff0c;公司各部門管理人員、前臺市場營銷人員參加述職&#xff0c;公司領導班子出席會議。 本次述職采取了現場匯報點評的…

關于宏v4l2_subdev_call的拆解

struct v4l2_subdev *sd結構體 struct v4l2_subdev { #if defined(CONFIG_MEDIA_CONTROLLER)struct media_entity entity; #endifstruct list_head list;struct module *owner;bool owner_v4l2_dev;u32 flags;struct v4l2_device *v4l2_dev;const struct v4l2_subdev_ops *op…

數字滾動動畫~

前言 數字從0.00滾動到某個數值的動畫 實現&#xff08;React版本&#xff09; Dom <div className"number" ref{numberRef}>0.00</div> JS const _initNumber () > {const targetNumber 15454547.69;const duration 1500;const numberElement…

vivado DRIVE、EDIF_EXTRA_SEARCH_PATHS

驅動器 DRIVE指定配置有I/O的輸出緩沖器的輸出緩沖器驅動強度&#xff08;mA&#xff09; 支持可編程輸出驅動強度的標準。 體系結構支持 所有架構。 適用對象 ?端口&#xff08;get_Ports&#xff09; 連接到輸出緩沖器的輸出或雙向端口 價值觀 整數值&#xff1a; ? 2 ? 4…

【UML用戶指南】-33-對體系結構建模-系統和模型

目錄 1、系統和子系統 2、模型和視圖 3、跟蹤 4、常用建模技術 4.1、對系統的體系結構建模 4.2、對系統的系統建模 模型是對現實世界的簡化——即對系統的抽象&#xff0c;建立模型的目的是為了更好地理解系統。 1、系統和子系統 一個系統可能被分解成一組子系統&#…

09.C2W4.Word Embeddings with Neural Networks

往期文章請點這里 目錄 OverviewBasic Word RepresentationsIntegersOne-hot vectors Word EmbeddingsMeaning as vectorsWord embedding vectors Word embedding processWord Embedding MethodsBasic word embedding methodsAdvanced word embedding methods Continuous Bag-…

esp32硬件電路設計

ESP-IDF 入門指南 | 樂鑫科技 (espressif.com) ESP32-DevKitC V4 入門指南 - ESP32 - — ESP-IDF 編程指南 v5.1 文檔 (espressif.com)

每日一題~abc356(對于一串連續數字 找規律)

添加鏈接描述 題意&#xff1a;對于給定的n,m 。計算0~n 每一個數和m & 之后&#xff0c;得到的數 的二進制中 1的個數的和。 一位一位的算。最多是60位。 我們只需要計算 在 1-n這些數上&#xff0c;有多少個數 第i位 為1. 因為是連續的自然數&#xff0c;每一位上1 的…

Linux下的misc設備驅動

文章目錄 前言一、misc是什么&#xff1f;二、調用API1.注冊2.注銷 三、驅動框架總結 前言 misc設備即雜項設備&#xff0c;Linux系統中類似按鍵、觸摸屏都有專門框架處理&#xff0c;類似adc、蜂鳴器等設備無法明確其屬于什么類型&#xff0c;一般就歸屬于雜項設備&#xff0…

Sqli-labs合集之環境搭建

Sqli-labs的搭建 搭建第一個SQL注入學習靶場環境&#xff1a; 軟件&#xff1a;sqli-labs 安裝過程&#xff1a; 1.源碼地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.&#xff1b; 2.將壓縮包解壓到phpst…