中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

七、Web服務器Apache的配置和管理

發布時間:2020-04-07 03:29:43 來源:網絡 閱讀:4389 作者:少年不在了 欄目:建站服務器

  萬維網Web,是在Internet上以超文本為基礎形成的信息網。用戶通過瀏覽器可以訪問Web服務器上的信息資源,目前在Linux操作系統上最常用的Web服務器軟件是Apache。Apache是一種開源的HTTP服務器軟件,可以在包括UNIX、Linux以及Windows在內的大多數主流計算機操作系統中運行。

7.1、Apache簡介

  Apache是一款開源軟件,所以得到了開源社區支持,不斷開發出新的功能特性,并修補了原來的缺陷 。經過多年來不斷的完善,如今的Apache已經是最流行的Web服務器端軟件之一。Apache擁有以下眾多的

特性,保證它可以高效穩定地運行。

1.支持最新的HTTP/1.1通信協議

2.擁有簡單而強有力的基于文件的配置過程

3.支持通用網關接口CGI

4.支持基于IP和基于域名的虛擬主機

5.支持多種方式的HTTP認證

6.集成Perl處理模塊

7.集成代理服務器模塊

8.支持實時監視服務器狀態和定制服務器日志

9.支持服務器端包含指令(SSI)

10.支持安全Socket層(SSL)

11.提供用戶會話過程的跟蹤

12.支持FastCGI

13.通過第三方模塊可以支持JavaServlets

  Apache采用模塊化的設計,模塊安裝后就可以為Apache內核增加相應的新功能。默認情況下Apache已經安裝部分模塊,用戶也可以使用模塊配置,自定義Apache服務器中需要安裝哪些功能,這正是Apache靈活性的表現。常見的功能模塊有:

模塊名功能說明
mod_actions.so運行基于MIME類型的CGI腳本
mod_alias.so 支持虛擬目錄和頁面重定向
mod_asis發送包含自定義HTTP頭的文件
mod_auth_basic.so基本驗證
mod_auth_digest.so使用MD5加密算法的用戶認證
mod_authn_alias.so 允許使用第三方驗證
mod_authn_anon.so 允許匿名用戶訪問認證的區域
mod_authn_dbd.so使用數據庫保存用戶驗證信息
mod_authn_dbm.so 使用DBM數據文件保存用戶驗證信息
mod_authn_default.so處理用戶驗證失敗
mod_authn_file.so 使用文本文件保存用戶驗證信息
mod_authnz_ldap.so使用LDAP目錄進行用戶驗證
mod_authz_default.so 處理組驗證失敗
mod_authz_groupfile.so使用plaintext文件進行驗證
mod_authz_host.so基于主機的組驗證
mod_authz_user.so 用戶驗證模塊
mod_autoindex.so  生成目錄索引
mod_cache.so通向URI的內容緩存
mod_cgi.so支持CGI腳本
mod_cgid.so使用外部CGI進程運行CGI腳本
mod_dir.so提供用于trailing slash的目錄和索引文件
mod_env.so調整傳輸個給CGI腳本和SSI頁面的環境變量
mod_example.so
解釋Apache模塊的API
mod_filter.so 過濾信息
mod_imagemap.so
imagemap處理
mod_include.so解析HTML文件
mod_isapi.so
ISAPI擴展
mod_ldap.so使用第三方LDAP模塊進行LDAP連接和服務
mod_log_config.so
記錄發給服務器的訪問請求
mod_login.so
記錄每個請求輸入、輸出的字節數
mod_mime.so聯合被請求文件擴展名和文件行為的內容
mod_negotiation.so提供內容協商
mod_nw_ssl
為NetWare打開SSL加密
mod_proxy.so支持HTTP1.1協議的代理和網關服務器
mod_proxy_ajp.somod_proxy的AJP支持模塊
mod_proxy_balancer.somod_proxy的負載均衡模塊
mod_proxy_ftp.somod_proxy的ftp支持模塊
mod_proxy_http.somod_proxy的HTTP支持模塊
mod_setenvif.so允許設置基于請求的環境變量
mod_so.so
在啟動或重啟時提高可執行編碼和模塊的啟動
mod_ssl.so
使用SSL和TLS的加密
mod_status.so提供服務器性能運行信息
mod_userdir.so設置每個用戶的網站目錄
mod_usertrack.so記錄用戶在網站上的活動
mod_vhost_alias.so提供大量虛擬主機的動態配置

7.2、Apache服務器的安裝

  對于Centos6.5,在yum源中有自帶的Apache,版本為2.2.15,可以直接通過yum命令進行安裝。為了能夠獲得最新版本的Apache時,可以通過Apache官方網站www.apache.org下載該軟件的源代碼進行安裝,其軟件名稱為httpd,當前最新穩定版本為2.4.25。

[root@mylinux home]# yum list httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * epel: mirrors.tuna.tsinghua.edu.cn
 * epel-debuginfo: mirrors.tuna.tsinghua.edu.cn
 * epel-source: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.njupt.edu.cn
 * updates: ftp.sjtu.edu.cn
Available Packages
httpd.x86_64                          2.2.15-59.el6.centos                         base
[root@mylinux home]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.25.tar.bz2
--2017-05-26 06:32:59--  http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.25.tar.bz2
Resolving mirror.bit.edu.cn... 202.204.80.77, 2001:da8:204:2001:250:56ff:fea1:22
Connecting to mirror.bit.edu.cn|202.204.80.77|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6398218 (6.1M) [application/octet-stream]
Saving to: httpd-2.4.25.tar.bz2

100%[======================================================>] 6,398,218   1.11M/s   in 5.9s    

2017-05-26 06:33:07 (1.04 MB/s) - httpd-2.4.25.tar.bz2 saved [6398218/6398218]

[root@mylinux home]# ls
bind-9.10.4-P8         httpd-2.4.25.tar.bz2  Python-2.7.13.tar.xz  Python-3.6.1.tar.xz
bind-9.10.4-P8.tar.gz  mylinux               Python-3.6.1
[root@mylinux home]# ls httpd-2.4.25.tar.bz2

1、安裝依賴文件

[root@mylinux httpd-2.4.25]# yum remove apr-util-devel apr apr-util-mysql apr-docs apr-devel apr-util apr-util-docs
...
Removed:
  apr.x86_64 0:1.3.9-5.el6_2                  apr-util.x86_64 0:1.3.9-3.el6_0.1        
Dependency Removed:
  apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1        httpd-tools.x86_64 0:2.2.15-59.el6.centos       
  subversion.x86_64 0:1.6.11-15.el6_7          
Complete!

[root@mylinux home]# wget 
[root@mylinux home]# wget 
[root@mylinux home]# wget 

[root@mylinux home]# tar xf apr-1.5.2.tar.gz        #解決apr not found問題
[root@mylinux home]# cd apr-1.5.2
[root@mylinux apr-1.5.2]# ./configure --prefix=/usr/local/apr
[root@mylinux apr-1.5.2]# make && make install

[root@mylinux home]# tar xf apr-util-1.5.4.tar.gz   #解決APR-util not found問題
[root@mylinux home]# cd apr-util-1.5.4
[root@mylinux apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config 
[root@mylinux apr-util-1.5.4]# make && make install

[root@mylinux home]# tar xf pcre-8.40.tar.bz2       #解決pcre問題
[root@mylinux home]# cd pcre-8.40
[root@mylinux pcre-8.40]# ./configure --prefix=/usr/local/pcre
[root@mylinux pcre-8.40]# make && make install

[root@mylinux home]#yum install pcre-devel -y

2、編譯安裝httpd

[root@mylinux home]# tar xf httpd-2.4.25.tar.bz2
[root@mylinux home]# cd httpd-2.4.25
[root@mylinux httpd-2.4.25]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=event
[root@mylinux httpd-2.4.25]make && make install

#導出頭文件
[root@mylinux httpd-2.4.25]# ln -sv /usr/local/apache/include /usr/include/httpd
`/usr/include/httpd' -> `/usr/local/apache/include'
  
#導出庫文件
[root@mylinux httpd-2.4.25]# ldconfig 
[root@mylinux httpd-2.4.25]# ldconfig  -p    #查看當前系統庫文件
326 libs found in cache `/etc/ld.so.cache'
        libz.so.1 (libc6,x86-64) => /lib64/libz.so.1
        libz.so (libc6,x86-64) => /usr/lib64/libz.so
        libyaml-0.so.2 (libc6,x86-64) => /usr/lib64/libyaml-0.so.2
        libxtables.so.4 (libc6,x86-64) => /lib64/libxtables.so.4
        libxslt.so.1 (libc6,x86-64) => /usr/lib64/libxslt.so.1
        libxml2.so.2 (libc6,x86-64) => /usr/lib64/libxml2.so.2
...

導出man手冊#vim /etc/man.config 
[root@mylinux httpd-2.4.25]# vim /etc/man.config
...
MANPATH      /usr/local/apache/man/   #添加該行

輸出二進制程序
[root@mylinux httpd-2.4.25]# vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache/bin:$PATH
[root@mylinux httpd-2.4.25]# source /etc/profile.d/httpd.sh 

[root@mylinux httpd-2.4.25]# apachectl start    #啟動
AH00557: httpd: apr_sockaddr_info_get() failed for mylinux
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

[root@mylinux httpd-2.4.25]# apachectl stop      #關閉
AH00557: httpd: apr_sockaddr_info_get() failed for mylinux
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

#解決錯誤信息的方法
[root@mylinux etc]# vim /etc/httpd24/httpd.conf 
  修改ServerName www.example.com:80 為 ServerName localhost:80
[root@mylinux etc]# apachectl start             #啟動
[root@mylinux etc]# ps -ef | grep httpd         #檢查進程
root     39780     1  0 07:31 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   39781 39780  0 07:31 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   39782 39780  0 07:31 ?        00:00:00 /usr/local/apache/bin/httpd -k start
daemon   39783 39780  0 07:31 ?        00:00:00 /usr/local/apache/bin/httpd -k start
root

3、檢查Apache頁面

七、Web服務器Apache的配置和管理

7.3、Apache服務器的基本配置和維護

  Apache在安裝時已經自動采用了一系列的默認設置,安裝完成后Web服務器已經可以對外提供WWW服務,但為了能夠更好地運作,還需要對Apache進行一些配置。Apache的主要配置文件為httpd.conf,此外,Apache還提供了相關的命令以方便管理和配置。

常用的命令有:

httpd:Apache 服務器。

apachectl:Apache HTTP 服務器控制工具。

abApache HTTP 服務器性能基準工具。

  -c: 模擬的并發數-n: 總請求數

apxs:Apache 擴展工具。

configure:配置源代碼。

dbmmanage:為基本認證創建和更新DBM 格式的用戶認證文件。

htcacheclean:清理磁盤緩存。

htdigest:為摘要認證創建和更新用戶認證文件。

htdbm:操作 DBM 密碼數據庫。

htpasswd:為基本認證創建和更新用戶認證文件。

httxt2dbm:為 RewriteMap 創建 dbm 文件。

logresolve:將 Apache 日志文件中的 IP 地址解析到主機名稱。

rotatelogs:不關閉 Apache 而切換日志文件。

suexec:執行外部程序前切換用戶。

   此外測試Apache服務器是否正常工作,還可以使用curl命令。curl是基于URL語法在命令行方式下工作的文件傳輸工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協議。curl支持HTTPS認證,并且支持HTTP的POST、PUT等方法, FTP上傳, kerberos認證,HTTP上傳,代理服務器, cookies, 用戶名/密碼認證, 下載文件斷點續傳,上載文件斷點續傳,http代理服務器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務器,,通過http代理服務器上傳文件到FTP服務器等等,功能十分強大。

curl的常用選項:

  -A/--user-agent <string> 設置用戶代理發送給服務器

  -basic 使用HTTP基本驗證

  --tcp-nodelay 使用TCP_NODELAY選項

  -e/--referer <URL> 來源網址

  --cacert <file> CA證書 (SSL)

  --compressed 要求返回是壓縮的形勢

  -H/--header <line>自定義頭信息傳遞給服務器

  -I/--head 只顯示響應報文首部信息

  --limit-rate <rate> 設置傳輸速度

  -u/--user <user[:password]>設置服務器的用戶和密碼

  -0/--http1.0 使用HTTP 1.0

查看Apache軟件的版本信息

[root@mylinux bin]# apachectl -V
Server version: Apache/2.4.25 (Unix)
Server built:   May 26 2017 07:07:15
Server's Module Magic Number: 20120211:67
Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture:   64-bit
Server MPM:     event           #工作模式
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr/local/apache"
 -D SUEXEC_BIN="/usr/local/apache/bin/suexec"
 -D DEFAULT_PIDLOG="logs/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/httpd24/mime.types"
 -D SERVER_CONFIG_FILE="/etc/httpd24/httpd.conf"

查看已經被編譯的模塊

[root@mylinux bin]# apachectl -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c
  • httpd的MPM特性

 httpd采用core + modules模塊化設計方法,其中模塊采用DSO(Dynamic Shared Object動態模塊加載)的方式,具有MPM(Multipath Processing Module,多道處理模塊)特性。其主要有三種工作方式:

  prefork: 一個請求用一個進程處理,穩定性好、大并發場景下消耗資源較多;事先創建進程,按需維持適當的進程,模塊塊設計,核心比較小,各種功能都模塊添加(包括php),支持運行配置,支持單獨編譯模塊,支持多種方式的虛擬主機配置。

  worker: 一個進程多個線程,一個線程響應一個請求

  event: 一個線程響應多個請求,事件驅動,主要目的在于實現單線程響應多個請求

七、Web服務器Apache的配置和管理

<IfModule mpm_prefork_module>
  StartServers: 默認啟動的工作進程數;
  MinSpareServers: 最少空閑進程數;
  MaxSpareServers: 最大空閑進程數;
  ServerLimit: 最大活動進程數;
  MaxClients: 并發請求的最大數;
  MaxRequestsPerChild: 每個子進程在生命周期內所能夠服務的最多請求個數;
</IfModule>

七、Web服務器Apache的配置和管理

<IfModule mpm_worker_module>
  StartServers:啟動的子進程的個數
  MaxClients: 并發請求的最大數;
  MinSpareThreads:最小空閑線程數;
  MaxSpareThreads:最大空閑線程數;
  ThreadsPerChild:每個子進程可生成的線程數;
  MaxRequestsPerChild:每個子進程在生命周期內所能夠服務的最多請求個數
</IfModule>

七、Web服務器Apache的配置和管理

<IfModule mpm_event_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>
  • httpd.conf配置文件介紹

  httpd.conf是Apache的配置文件,Apache中的常見配置主要都是通過修改該文件來實現的,該文件更改后需要重啟Apache服務使更改的配置生效。

  與Apache網絡和系統相關的選項:

ServerRoot "/usr/local/apache"     #設置Apache安裝目錄
Listen 80                          #設置監聽端口
User daemon                        #設置Apache進程的執行者
Group daemon                       #設置Apache進程執行者所屬的用戶組
ServerAdmin you@example.com        #設置網站管理員郵箱
ServerName localhost:80            #服務其主機與端口

  與Apache文件和目錄權限相關選項:

<Directory />                             #設置根目錄權限
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "/usr/local/apache/htdocs"   #設置網站根目錄
<Directory "/usr/local/apache/htdocs">    #設置/usr/local/apache/htdocs目錄權限 
   Options Indexes FollowSymLinks
   AllowOverride None
   Require all granted
</Directory>
#最終匹配結果:二者都匹配或二者都無匹配項時,則以后者為準;否則,則以匹配到的為準
<IfModule dir_module>                     #設置index.html為首頁
    DirectoryIndex index.html
</IfModule>
<Files ".ht*">                            #.ht*為后綴文件的訪問權限
    Require all denied
</Files>

常見可用選項:

Indexes:        缺少指定的默認頁面時,允許將目錄中所有文件以列表形式返回用戶

FollowSymLinks: 允許跟隨符號鏈接所指向的原始文件;

None:           所有都不啟用;

All:            所有都啟用;

ExecCGI:        允許使用mod_cgi模塊執行CGI腳本;

Includes:       允許使用mod_include模塊實現服務器端包含(SSI);

MultiViews:    允許使用mod_negotiation實現內容協商;

SymLinksIfOwnerMatch:在鏈接文件屬主屬組與原始文件的屬主屬組相同時,允許跟隨符號鏈接所指向的原始文件;

  與Apache日志相關的選項:

ErrorLog "logs/error_log"     #設置錯誤日志位置
LogLevel warn                 #設置錯誤日志級別
<IfModule log_config_module>  #設置訪問日志的格式模板
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" common    #設置訪問日志的位置和格式
</IfModule>
<IfModule alias_module>       #別名設置
    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
</IfModule>
<IfModule cgid_module>
    
</IfModule>
<Directory "/usr/local/apache/cgi-bin"> #設置/usr/local/apache/cgi-bin目錄權限
    AllowOverride None
    Options None
    Require all granted
</Directory>
<IfModule headers_module>
    RequestHeader unset Proxy early
</IfModule>
<IfModule mime_module>                    #mime模塊的相關配置
    TypesConfig /etc/httpd24/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule proxy_html_module>    
Include /etc/httpd24/extra/proxy-html.conf
</IfModule>
<IfModule ssl_module>                     #ssl模塊的相關設置
  SSLRandomSeed startup builtin
  SSLRandomSeed connect builtin
</IfModule>

配置文件的修改

  用戶可以直接通過圖形界面中文件編輯器或者通過vi對配置文件進行修改,修改完成后必須重啟Apache服務器才能使更改生效。如果配置文件中添加了錯誤的參數或者設置了錯誤的參數值,Apache將無法啟動,為了方便用戶驗證httpd.conf配置文件的參數是否配置正確,Apache提供了命令自動完成配置文件的檢查工作。

[root@mylinux httpd24]# apachectl configtest
Syntax OK
  • 符號鏈接和虛擬目錄

  在默認情況下,用戶通過http訪問Web服務器所瀏覽到的所有資料都是存放在DocumentRoot參數所指定的目錄之下,但該參數只能指定一個目錄作為參數值,當該目錄空間不足時,要把文件放在其他文件系統時,用戶如何訪問文件呢?Apache提供了來年各種解決辦法。

符號鏈接

  假設現在的文檔根目錄為/usr/local/apache/htdocs,希望把/usr/share/doc目錄映射成/doc/的訪問路徑。配置過程很簡單,使用ln命令即可。

[root@mylinux httpd24]# cd /usr/local/apache/htdocs/
[root@mylinux htdocs]# ln -s /usr/local/share/ doc
[root@mylinux htdocs]#

七、Web服務器Apache的配置和管理

虛擬目錄

 使用虛擬目錄是另一種將根目錄以外的內容加入到站點中的辦法,例如把/var/log目錄映射成網站根目錄的log下。

[root@mylinux htdocs]# vim /etc/httpd24/httpd.conf
...
<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to 
    # exist in your server's namespace, but do not anymore. The client 
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://www.example.com/bar

    #
    # Alias: Maps web paths into filesystem paths and is used to
    # access content that does not live under the DocumentRoot.
    # Example:
    Alias /log   "/var/log"                #需要添加的信息
    <Directory "/var/log">
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
    </Directory>
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

</IfModule>
...
[root@mylinux htdocs]# apachectl configtest
Syntax OK
[root@mylinux htdocs]# apachectl restart

七、Web服務器Apache的配置和管理

  • 頁面重定向

 如果用戶經常訪問某個頁面,他可能會把頁面的URL添加到收藏夾中,在每次訪問頁面的時候可以直接單擊收藏夾中的記錄訪問。但是如果網站進行了目錄結構的更新后,用戶再使用原來的URL訪問就會出現404頁面無法找到的錯誤,為了方便用戶能繼續使用原來的URL進行訪問,這是就要使用頁面重定向。

  Apache提供了Redirect命令用于配置頁面重定向,命令格式為:

Redirect [HTTP代碼]  用戶請求的URL [重定向后的URL]

  假設有一個/doc目錄,現在管理員對網站目錄結構進行整理,并把/doc目錄移動到/old-doc目錄下,為解決這個問題需要/doc配置頁面重定向。

七、Web服務器Apache的配置和管理

[root@mylinux old-doc]# vim /etc/httpd24/httpd.conf    #打開配置文件
...
<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to
    # exist in your server's namespace, but do not anymore. The client
    # will make a new request for the document at its new location.
    # Example:
    Redirect 303 /doc       #添加重定向信息
... 
[root@mylinux old-doc]# apachectl configtest
Syntax OK
[root@mylinux old-doc]# apachectl restart

  輸入http://192.168.191.128/doc,回車后自動重定向到了http://192.168.191.128/old-doc。

七、Web服務器Apache的配置和管理

  • Apache日志文件

  Apache服務器運行后會生成兩個日志文件,分別是access_log(訪問日志)和error_log(錯誤日志),采用默認安裝時,這些文件可以在/usr/local/apache/logs目錄下找到。

[root@mylinux extra]# cd /usr/local/apache/logs/
[root@mylinux logs]# ls
access_log  error_log  httpd.pid

訪問日志

  Apache的訪問日志就是記錄Web服務器的所有訪問活動,每一行記錄了一條訪問記錄,由7個部分組成,其格式為:

客戶端地址 訪問者的標識 訪問者的驗證名字 請求時間 請求類型 請求的HTTP代碼 發送給客戶端的字節數

客戶端地址:       表明訪問網站的客戶端IP地址 

訪問者的標識:     一般為空白,'-'代替 

訪問者的驗證名字: 用于記錄訪問者進行身份驗證時提供的名字,一般也為空白

請求時間:         記錄訪問操作的發生時間          

請求類型:         記錄服務器收到的是一個什么類型請求

請求的HTTP代碼:   該信息可判斷請求是否成功     

發送給客戶端的字節數:發送給客戶端的總字節數

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common   #配置日志格式
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog "logs/access_log" common     #訪問日志的格式
</IfModule>

LogFormat Format_String  Format_Name    #各自段表示的含義

%h: 客戶端地址

%l: 遠程登錄名,通常為-

%u: 認證時的遠程用戶名,沒有認證時為-

%t: 收到請求時的時間;

%r: 請求報文的起始行;

%>s: 響應狀態碼;

%b: 響應報文的長度,單位為字節

%{Header_Name}i: 記錄指定請求報文首部的內容(value);

[root@mylinux logs]# cat access_log 
192.168.191.1 - - [26/May/2017:07:32:23 +0800] "GET / HTTP/1.1" 200 45
192.168.191.1 - - [26/May/2017:07:32:23 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.191.1 - - [02/Jun/2017:04:17:02 +0800] "GET / HTTP/1.1" 200 45
192.168.191.1 - - [02/Jun/2017:04:17:02 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.191.1 - - [02/Jun/2017:04:17:02 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.191.1 - - [02/Jun/2017:04:20:12 +0800] "GET /doc HTTP/1.1" 301 235
192.168.191.1 - - [02/Jun/2017:04:20:12 +0800] "GET /doc/ HTTP/1.1" 200 332
192.168.191.1 - - [02/Jun/2017:04:30:51 +0800] "GET /log HTTP/1.1" 404 201

錯誤日志

  錯誤日志是Apache提供的另一種標準日志,該日志文件記錄了Apache服務器運行過程所發生的錯誤信息。httpd.conf配置文件提供了兩個配置參數:

ErrorLog "logs/error_log"     #錯誤日志文件
LogLevel warn                 #錯誤日志級別

  錯誤日志級別有以下幾種:

嚴重程度等級說明
1emerg系統不可用
2alert需要立即引起注意的情況
3
crit危急情況
4
error錯誤信息
5
warn警告信息
6
notice需要引起注意的情況
7
info一般信息
8
debug由運行于debug模式的程序輸出的信息

  emerg級別的信息嚴重程度最高,debug級別最低。如果把錯誤日志設置成warn級別,則嚴重程度由1-5的所有錯誤信息都會被記錄下來。

[root@mylinux logs]# cat error_log 
[Fri May 26 07:20:43.874118 2017] [mpm_event:notice] [pid 39580:tid 140405771355904] AH00489: Apache/2.4.25 (Unix) configured -- resuming normal operations
[Fri May 26 07:20:43.874427 2017] [core:notice] [pid 39580:tid 140405771355904] AH00094: Command line: '/usr/local/apache/bin/httpd'
[Fri May 26 07:22:07.002599 2017] [mpm_event:notice] [pid 39580:tid 140405771355904] AH00491: caught SIGTERM, shutting down
[Fri May 26 07:29:51.083928 2017] [mpm_event:notice] [pid 39676:tid 140351188608768] AH00489: Apache/2.4.25 (Unix) configured -- resuming normal operations
[Fri May 26 07:29:51.085382 2017] [core:notice] [pid 39676:tid 140351188608768] AH00094: Command line: '/usr/local/apache/bin/httpd'
[Fri May 26 07:29:57.164059 2017] [mpm_event:notice] [pid 39676:tid 140351188608768] AH00491: caught SIGTERM, shutting down

  從文件內容可以看出,每一行記錄一個錯誤,由三部分組成

時間 錯誤等級 錯誤信息

  7.4、Apache安全配置

  Apache提供了多種安全控制手段,包括設置Web訪問控制、用戶登錄密碼認證以及.htaccess文件等。通過這些技術手段,可以進一步提升Apache服務器的安全級別,減少服務器受***或數據被竊取的風險。

  • 訪問控制

 設置訪問控制是提高Apache服務器安全級別最有效的手段之一。Diretory段用于設置與目錄相關的參數和指令,包括訪問控制和認證。

<Directory 目錄的路徑>
    目錄相關的配置參數和指令
</Directory>

Allow指令:用于設置那些客戶端可以訪問Apache

  Allow from [All/全域名/部分域名/IP地址/網絡地址/CIDR地址]...

    All:表示所有客戶端

    全域名:表示域名對應的客戶端,如www.domain.com

    部分域名:表示域名內的所有客戶端,如domain.com

    IP地址:如192.168.1.1

    網絡地址:如172.20.17.0/256.356.355.0

    CIDR地址:如172.20.17.0/24

Deny指令:用于設置拒絕哪些客戶端訪問Apache

Order指令:用于指定執行訪問規則的先后順序

  Order Allow,Deny :先執行允許訪問規則,在執行拒絕訪問規則

  Order Deny,Allow :先執行拒絕訪問規則,在執行允許訪問規則

  • 用戶認證

  Apache的用戶認證包括基本認證和摘要認證。摘要認證比基礎認證更加安全,但不是所有的瀏覽器都支持摘要認證。要使用用戶認證,首先要創建保存用戶和密碼的認證密碼文件。在Apache中提供了htpasswd命令用于創建和修改認證密碼文件。

[root@mylinux httpd24]# htpasswd -c /etc/httpd24/.htpasswd sam   #添加認證密碼文件
New password: 
Re-type new password: 
Adding password for user sam
[root@mylinux httpd24]# vim httpd.conf          #添加配置信息
<Directory "/usr/local/apache/htdocs/fin">                   #需要認證的目錄
        Options None                     
        AllowOverride AuthConfig
        AuthType Basic                          #認證類型
        AuthName "Private Area"
        AuthUserFile /etc/httpd24/.htpasswd     #指明認證密碼文件的位置
        Require valid-user
</Directory>    
[root@mylinux httpd24]# apachectl configtest
Syntax OK
[root@mylinux httpd24]# apachectl restart
[root@mylinux fin]# ls                 #fin目錄下的文件
applications  index.html  info  man
[root@mylinux fin]# cat index.html     #index.html文件內容
Auth

七、Web服務器Apache的配置和管理

七、Web服務器Apache的配置和管理


7.5、虛擬主機

  虛擬主機服務就是指將一臺物理主機服務器虛擬成多態Web服務器,可以有效節省硬件資源且方便管理。Apache支撐3種不同的虛擬主機方式:

基于不同的IP實現不同的虛擬主機:變化IP

基于不同的port實現不同的虛擬主機:變化port

基于不同的FQDN實現不同的虛擬主機:變化ServerName的值

  • 基于IP的虛擬主機

  基于IP的虛擬主機服務商必須同時設置有多個IP,服務器根據用戶請求目的的IP地址來判定用戶請求的那個虛擬主機。在使用虛擬主機時,必須要關閉中心主機。

[root@mylinux fin]# ifconfig     #當前IP
eth0      Link encap:Ethernet  HWaddr 00:0C:29:B7:AB:D0  
          inet addr:192.168.191.128  Bcast:192.168.191.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb7:abd0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3627 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2866 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:353550 (345.2 KiB)  TX bytes:516806 (504.6 KiB)
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
[root@mylinux fin]# ifconfig eth0:1 192.168.191.100 netmask 255.255.255.255#添加IP地址
[root@mylinux fin]# ifconfig eth0:2 192.168.191.101 netmask 255.255.255.255#添加IP地址
[root@mylinux fin]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:B7:AB:D0  
          inet addr:192.168.191.128  Bcast:192.168.191.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb7:abd0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9337 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7346 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:899106 (878.0 KiB)  TX bytes:1155902 (1.1 MiB)

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:B7:AB:D0  
          inet addr:192.168.191.100  Bcast:192.168.191.100  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:2    Link encap:Ethernet  HWaddr 00:0C:29:B7:AB:D0  
          inet addr:192.168.191.101  Bcast:192.168.191.101  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:20 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2148 (2.0 KiB)  TX bytes:2148 (2.0 KiB)
[root@mylinux httpd24]# vim httpd.conf              #打開主配置文件

#DocumentRoot "/usr/local/apache/htdocs"            #注釋該行,關閉中心主機

Include /etc/httpd24/extra/httpd-vhosts.conf        #啟動虛擬主機配置文件 

[root@mylinux httpd24]# vim extra/httpd-vhosts.conf #到專用虛擬主機配置文件進行配置
<VirtualHost 192.168.191.100>                    
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/apache/docs/server1"   
    ServerName www.server1.com
    ErrorLog "logs/server1.error_log"
    CustomLog "logs/server1.access_log" common
</VirtualHost>

<VirtualHost 192.168.191.101>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/apache/docs/server2"
    ServerName www.server2.com
    ErrorLog "logs/server2.error_log"
    CustomLog "logs/server2.access_log" common
</VirtualHost>
[root@mylinux httpd24]# apachectl configtest
Syntax OK
[root@mylinux httpd24]# cd /usr/local/apache/       #創建首頁
[root@mylinux apache]# mkdir docs
[root@mylinux apache]# cd docs/
[root@mylinux docs]# mkdir {server1,server2}
[root@mylinux docs]# cd server1/
[root@mylinux server1]# echo "www.server1.com" > index.html
[root@mylinux server1]# cd ..
[root@mylinux docs]# cd server2/
[root@mylinux server2]# echo "www.server2.com" > index.html
[root@mylinux server2]# apachectl restart

七、Web服務器Apache的配置和管理

七、Web服務器Apache的配置和管理

  • 基于主機名的虛擬主機服務

  其具體配置過程為:

[root@mylinux extra]# vim /etc/hosts     #添加主機名解析
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.191.128 www.server1.com
192.168.191.128 www.server2.com
"/etc/hosts" 4L, 222C written

[root@mylinux httpd24]# vim httpd.conf              #打開主配置文件

#DocumentRoot "/usr/local/apache/htdocs"            #注釋該行,關閉中心主機
Include /etc/httpd24/extra/httpd-vhosts.conf        #啟動虛擬主機配置文件 
[root@mylinux httpd24]# vim extra/httpd-vhosts.conf #到專用虛擬主機配置文件進行配置

<VirtualHost 192.168.191.128>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/apache/docs/server1"
    ServerName www.server1.com
    ErrorLog "logs/server1.error_log"
    CustomLog "logs/server1.access_log" common
    <Directory "/usr/local/apache/docs/server1">
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.191.128>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/apache/docs/server2"
    ServerName www.server2.com
    ErrorLog "logs/server2.error_log"
    CustomLog "logs/server2.access_log" common
    <Directory "/usr/local/apache/docs/server2">
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
    </Directory>
</VirtualHost>
[root@mylinux extra]# apachectl configtest
Syntax OK
[root@mylinux extra]# apachectl restart
[root@mylinux extra]# curl       #測試 
www.server1.com
[root@mylinux extra]# curl       #測試 
www.server2.com
  • 防止網站圖片盜鏈

  為了防止其他網站非法盜取本網站中的圖片文件,可以在Apache中進行配置,以禁止圖片被非法盜用。假設本網站域名為www.myweb.com,用戶可在配置文件中加入如下內容:

SetEnvIfNoCase Referer "^http://www.myweb.com/" local_ref=1
<FilesMatch ".(gif|jpg|bmp)">
  Order Allow,Deny
  Allow from env=local_ref
</FileMatch>



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰州市| 阿瓦提县| 泸定县| 韶关市| 丹寨县| 阿合奇县| 莲花县| 慈利县| 扶风县| 多伦县| 蚌埠市| 永吉县| 司法| 昭苏县| 资中县| 阿拉善左旗| 勃利县| 陇南市| 安福县| 萝北县| 遂平县| 南皮县| 桂阳县| 靖远县| 南川市| 昌黎县| 衢州市| 剑川县| 海原县| 绥芬河市| 宕昌县| 锦州市| 邢台县| 琼结县| 潞城市| 弋阳县| 米林县| 华阴市| 廉江市| 南康市| 柳河县|