2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Sisällysluettelo
Lisää dynaamisesti moduulin toimintavaiheita
Apachen uudelleenasennuksen vaiheet
Määritä anti-hotlink-kokeellinen ympäristö
Esimerkki paikallisen kuvan linkittämisestä
Verkkosivuston pääsynopeuteen vaikuttavat useat tekijät, kuten sovelluksen vastenopeus, verkon kaistanleveys, palvelimen suorituskyky, verkon lähetysnopeus asiakkaan kanssa jne. Yksi tärkeimmistä tekijöistä on itse Apachen reagointikyky. Voit lisätä sovelluksesi nopeutta verkkopakkauksella. Vielä tärkeämpää on, että se ei maksa lainkaan, ja se lisää vain hieman palvelimen suorittimen käyttöä yhdellä tai kahdella prosenttiyksiköllä tai vähemmän.
Web-sivujen pakkaus tyhjennysmoduulin kautta
Jos olet jo asentanut Apachen lähdekoodipaketin kautta, jos säilytät lähdekoodipaketin, voit määrittää sen uudelleen, kääntää ja asentaa Apachen uudelleenasentaminen ei vaikuta aiempiin parametreihin.
Tai jos olet määrittänyt moduulien dynaamisen lataamisen viimeisen asennuksen aikana, voit käyttää apxs-työkaluja lisätäksesi moduuleja dynaamisesti ilman uudelleenasennusta.
Lisää tyhjennysmoduuli dynaamisesti asentamatta Apachea uudelleen
cd Apache HTTP-palvelimelle suodattimiin liittyvän moduulikoodin tallentamiseksi
Käytä apxs-työkalua toimiaksesi
Käytä lopuksi apachectl-komentoa pipesilla ja grepillä tarkistaaksesi, onko deflate-moduuli latautunut.
- [root@localhost filters]# cd /root/httpd-2.4.25/modules/filters/
- [root@localhost filters]# apxs -i -c -a mod_deflate.c
- [root@localhost filters]# apachectl -t -D DUMP_MODULES | grep deflate
- deflate_module (shared)
Ota mod_deflate-moduuli käyttöön httpd-määritystiedostossa
- [root@localhost filters]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/deflate
- LoadModule deflate_module modules/mod_deflate.so # 去掉开头注释
- <IfModule mod_deflate.c>
- # 对指定的类型应用deflat进行压缩(文本、样式表、图像)
- AddOutputFilterByType DEFLATE text/html text/css text/jpg text/png text/gif
- DeflateCompressionLevel 9 # 指定了压缩级别为9,表示最高级别的压缩(压缩比最高,但消耗CPU资源较多)
- SetOutputFilter DEFLATE # 指定默认的输出过滤器为deflate进行输出内容的压缩
- </IfModule>
Lisää tyhjennysmoduuli asentamalla Apache suoraan uudelleen
Käytä ensin apachectl -t -D DUMP_MODUULIT | grep tyhjentääKomento tarkistaa, onko Apachella tällä hetkellä tyhjennysmoduuli
Jos Apache on käytössä, käytäsystemctl stop httpdSulje palvelu
Anna lähdekoodipaketin purkuhakemisto, määritä asennushakemisto ja ota käyttöön joitakin toimintoja. Tyhjennysmoduulia käytetään verkkosivujen pakkaamiseen.
./configureKäsittelyn jälkeen käytätee && tee asennusKomento kääntää ja asentaa
- [root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate
- [root@localhost httpd-2.4.25]# make && make install
Käytä ll-komentoa tarkistaaksesi, onko deflate-moduuli käytössä. Voit nähdä, että mod_deflate.so-tiedosto on olemassa.
- [root@localhost httpd-2.4.25]# ll /usr/local/httpd/modules/mod_deflate.so
- -rwxr-xr-x 1 root root 53096 7月 10 20:43 /usr/local/httpd/modules/mod_deflate.so
Mutta käytä apachectl -t -D DUMP_MODUULIT | grep tyhjentääKomentoa ei voi kysyä, koska se ei ole käytössä Apache-määritystiedostossa.
Muokkaa httpd:n pääasetustiedostoa Noin riviltä 143 näet, että niitä on useitaLoadModulelausekkeet, lisäämme näiden LoadModulien alle uusia moduulin latauskäskyjä.
Moduulin latauskäskyn toisessa osassa voit käyttää absoluuttista polkua tai suhteellista polkua. Koska Apachea asennettaessa etuliite (etuliite) -sääntö määritetään ./configure-komentosarjan kautta, joten haluat määrittää tietyn polun. Apache-määritystiedosto Polku tiedostoon, etuliitepolku voidaan jättää pois
IfModule-tunnistetta käytetään moduulin konfiguroinnin ehdolliseen lataamiseen. Sen tehtävänä on tarkistaa, onko määritetty moduuli ladattu nykyiseen Apache-ympäristöön. IfModule-tunnisteeseen käärityt konfigurointiohjeet tulevat voimaan.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
-
- LoadModule deflate_module modules/mod_deflate.so
- <IfModule mod_deflate.c> # 只有当 mod_deflate 模块加载时才会执行下面的配置
- DeflateCompressionLevel 6 # 压缩级别,数字越大压缩比就越大
- SetOutputFilter DEFLATE # 启用deflate模块
- # 告诉服务器对哪些文件进行压缩,如果是已经压缩过的,就不再压缩
- AddOutputFilterByType DEFLATE text/html text/plain text/xml text/csstext/javascript application/x-javascript application/javascript application/json
- SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
- SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
- SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
- AddOutputFilterByType DEFLATE text/*
- AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
- AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
- </IfModule>
Tallenna ja poistu, voit käyttäähttpd -tSen tunnistaminen, onko konfiguraatiotiedostossa syntaksivirheitä. Jos se pyytää Syntaksi OK, virheitä ei ole.
Koska httpd:n on ladattava muokattu määritystiedosto uudelleen, jotta juuri lisätyt asetukset tulevat voimaan, käynnistä palvelu uudelleen.
Tällä hetkellä käytä verkkopalvelinta selaimessa, avaa kehittäjätyökalut painamalla näppäimistön F12-näppäintä, valitse verkkopalvelimen IP-osoite ja näet vastauksen otsikossa, että pakkaustekniikka on gzip.
Kokeilu päättyy
Web-sivujen välimuistissa tallennetaan välimuistiin jotkin sivut, jotka eivät usein muutu tai muuttuvat harvoin. Seuraavan kerran kun selain käyttää näitä sivuja uudelleen, näitä sivuja ei tarvitse ladata uudelleen, mikä parantaa käyttäjän pääsyn nopeutta. Apachen mod_expires-moduuli luo automaattisesti Expires-tunnisteen ja Cache-Control-tunnisteen sivun otsikkotietoihin Asiakasselain päättää tagien perusteella hankkia sivun paikallisen koneen välimuistiin seuraavaa käyntiä varten ilman toista pyyntöä. Vähennä palvelimeen pääsyn tiheyttä ja määrää tarpeettoman liikenteen vähentämiseksi ja pääsyn nopeuden lisäämiseksi.
Ota käyttöön web-sivujen välimuisti
Avaa httpd-pääkonfiguraatiotiedosto, ota käyttöön expires-moduuli ja lisää se ja käynnistä palvelu uudelleen.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式搜索:/expires_module
- 将前面的注释去掉,开启expires模块
- LoadModule expires_module modules/mod_expires.so
- <IfModule mod_expires.c>
- ExpiresActive On # 开启缓存功能
- ExpiresDefault "access plus 60 seconds" # 缓存时间设置为60秒
- </IfModule>
-
- 检测语法正确性,重启服务
- [root@localhost httpd-2.4.25]# httpd -t
- Syntax OK
- [root@localhost httpd-2.4.25]# systemctl restart httpd
Kun olet käynnistänyt palvelun uudelleen, siirry selaimeen päästäksesi verkkopalvelimeen, ja näet, että vastauksen otsikossa on vielä kaksi riviä tietoja.
Ohjelmiston haavoittuvuustiedot liittyvät tiettyyn versioon, joten versionumero on hyökkääjille erittäin hyödyllinen. Selaimen kehittäjätyökaluissa näet Apachen versiotiedot palvelinkohdassa vastausotsikossa.
Jos verkkohyökkääjä saa Apachen versiotiedot, hän suorittaa kohdennettuja hyökkäyksiä ja aiheuttaa tappioita verkkosivustolle. Siksi varsinaisessa tuotantoympäristössä Apachen versionumero tulisi piilottaa hyökkäysten riskin vähentämiseksi.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/httpd-default
- 将Include语句前的注释去掉,表示包含Include语句后面指定的文件在当前文件中(相当于把指定文件的内容复制粘贴到当前文件的当前Include语句的位置)
- # Various default settings
- Include conf/extra/httpd-default.conf
Tallenna ja poistu, avaa httpd.default-tiedosto
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/extra/httpd-default.conf
- 在第55行就可以设置隐藏版本信息,这里改为Prod
- ServerTokens Prod
Voit nähdä, että vaihtoehdot ovat kommenteissa: Aseta johonkin seuraavista: Full | OS | Pieni | Minimi | Majuri | Tuot
Vaihtoehdot | havainnollistaa |
ServerTokens täynnä | Palauttaa yksityiskohtaisimmat palvelintiedot, mukaan lukien käyttöjärjestelmän tyypin ja kootun moduuliluettelon. Esimerkki: Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.3.11 |
ServerTokens OS | Vain käyttöjärjestelmän tyyppi palautetaan. Esimerkki: Apache/2.4.41 (Unix) |
ServerTokens Minor | Palauttaa pää- ja sivuversionumerot. Esimerkiksi: Apache/2.4 |
ServerTokens Minimaalinen | Palauttaa pääversionumeron. Esimerkiksi: Apache/2 |
ServerTokens Major | Vain pääversionumero palautetaan. Esimerkiksi: Apache/2 |
ServerTokens Prod | Palauttaa vähimmäistiedot, näyttää vain Apachen, mutta jättää pois versionumeron. Esimerkiksi: Apache |
Tallenna ja poistu, käynnistä palvelu uudelleen.Käytä verkkopalvelinta
Voit nähdä, että versiotiedoissa näkyy vain yksi Apache
Apachen hotlinking on suojatoimenpide, joka estää muita verkkosivustoja tai luvattomia kolmansia osapuolia linkittämästä suoraan kuvia, videoita, ääniä tai muita verkkosivustosi resursseja.
Kun verkkosivusto käyttää resursseja suoraan sivustostasi, ne itse asiassa kuluttavat kaistanleveyttäsi ja palvelinresurssejasi, mahdollisesti ilman lupaasi.
CPU:n nimi | verkkotunnus | IP-osoite | käyttöjärjestelmä | Pääohjelmistot ja versiot |
apache1 | www.e1.com | 192.168.10.101 | CentOS 7.9 | httpd-2.4.25.tar.gz |
apache2 | www.e2.com | 192.168.10.201 | CentOS 7.9 | httpd-2.4.25.tar.gz tai yum-asennus |
asiakas | Windows 10 | Selain |
Kloonaa ensimmäinen palvelin suoraan tai käytä yum -y install httpd asentaaksesi httpd ja muuta IP-osoitteeksi 192.168.10.102.
Muokkaa kahden palvelimen isäntänimiä
- 101主机
- [root@localhost ~]# hostname apache1
- [root@localhost ~]# bash
- [root@apache1 ~]#
- 201主机
- [root@localhost ~]# hostname apache2
- [root@localhost ~]# bash
- [root@apache2 ~]#
Muokkaa kahden verkkopalvelimen isäntätiedostoja, jotta ne voivat selvittää vastaavat verkkotunnukset.
Muokkaa 201-isäntää noudattamalla alla olevia samoja vaiheita
- [root@apache1 ~]# vim /etc/hosts
- 在hosts文件末尾追加
- 192.168.10.101 www.e1.com
- 192.168.10.201 www.e2.com
Kaksoisnapsauta Win10-asiakaspalvelimen hosts-tiedostoa kohdassa C:WindowsSystem32driversetc avataksesi sen Notepadilla.
Sammuta kahden Web-palvelimen palomuurin ja ytimen suojausmekanismi, ota httpd-palvelu käyttöön ja yritä nähdä, voitko käyttää kahta Web-palvelinta asiakaspalvelimella.
- 在两个Web服务器操作
- [root@apache1 ~]# systemctl start httpd
- [root@apache1 ~]# setenforce 0
101-isäntä on sivustoni, ja minun on varastettava kuvat 201-isäntäverkkopalvelimelta.
Eli www.e1.com varastaa www.e2.comin kuvalinkin
Tule 201-isäntälle
Anna hakemisto, johon httpd tallentaa verkkosivutiedostot, vedä kuva sisään ja muokkaa index.html-tiedostoa.
- [root@apache2 ~]# cd /usr/local/httpd/htdocs/
- 在该目录下从宿主机拖入一张图片
- [root@apache2 htdocs]# vim index.html
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>标题</title>
- </head>
- <body>
- <h1>原图网站</h1>
- <img src="logo.jpg" /> # 如果图片文件是在网页文件同一目录下,可以不用加路径
- </body>
- </html>
Tallenna ja poistu Tällä hetkellä käy selaimella isäntäkoneella osoitteessa www.e2.com ja näet, että verkkosivulla on kuvia.
Jos haluat varastaa kuvia muilta sivustoilta, tarvitset linkin kuvaan napsauttamalla hiiren kakkospainikkeella kuvaa selaimessa ja valitsemalla Kopioi kuvalinkki.
Tule 101 Hostille
Lisää linkki kuvaan 101Web-palvelimen etusivulla
- [root@apache1 ~]# cd /var/www/html # 使用yum安装httpd的存放网页文件的目录
- [root@apache1 html]# vim index.html
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>标题</title>
- </head>
- <body>
- <h1>盗图网站</h1>
- <img src="http://www.e2.com/logo.jpg" />
- </body>
- </html>
Tallenna ja poistu, siirry asiakkaan Win10-isäntään ja käy kahdessa URL-osoitteessa www.e1.com ja www.e2.com
Avaa kehittäjätyökalut F12-näppäimellä. Verkosta näet, että www.e2.comin pyynnön URL-osoite ja kuvalinkit ovat www.e2.comin omia.
Sivuston www.e1.com pyynnön URL-osoite on www.e1.com, mutta kuvapyyntö on www.e2.com-palvelimen IP-osoite + kuvalinkki
Toistaiseksi on otettu käyttöön yksinkertainen paikallinen kuvalinkki.
Jos toinen isäntä varastaa 201-isännän kuvalinkin, vain kiinteä kuva näytetään sen kuvan sijaan, jonka toinen osapuoli haluaa varastaa.
Tuo toinen kuva (error.jpg) 201-isännän htdocs-hakemistoon (www.e2.com), joka tarjoaa alkuperäisen kuvan likaantumisen estokokeiluja varten.
Muokkaa sitten httpd:n asetustiedostoa ja ota uudelleenkirjoitusmoduuli käyttöön (osoitteen uudelleenkirjoitus). Uudelleenkirjoituksen tarkoitus on, että jos joku pyytää logoni.jpg, ohjaa pyyntö osoitteeseen error.jpg.
Osoitteen uudelleenkirjoitustoiminnolla pyyntö voidaan tarkastella ja arvioida. Jos pyynnön etuliite on www.e2.com, pääsy sallitaan ei sallita.
- [root@apache2 htdocs]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/rewrite
- LoadModule rewrite_module modules/mod_rewrite.so # 将开头注释去掉,启用rewrite模块
-
- 在末行模式下搜索:/htdocs
- 在<Directory "/usr/local/httpd/htdocs">标签内往下翻
- 找到AllowOverride参数的行,修改内容为下方内容
- AllowOverride None
- RewriteEngine On
- RewriteCond %{HTTP_REFERER} !^http://e2.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^http://e2.com/.*$ [NC]
-
-
- RewriteCond %{HTTP_REFERER} !^http://www.e2.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^http://www.e2.com/.*$ [NC]
- RewriteRule .*.(gif|jpg|swf)$ http://www.e2.com/error.png
parametri | havainnollistaa |
SalliOverride ALL | Salli RewriteEngine ja muut uudelleenkirjoitussäännöt .htaccess-tiedostoissa. KAIKKI: Sallii kaikentyyppisten uudelleenkirjoituskäskyjen ohittamisen .htaccess-tiedoston säännöillä. Ei mitään: Estää tämän hakemiston .htaccess-tiedostojen käytön palvelimen määrityksen ohittamiseen |
RewriteEngine päällä | Ota uudelleenkirjoitus käyttöön, tämä on ensimmäinen askel uudelleenkirjoitussääntöjen ottamiseksi käyttöön |
RewriteCond | Määritä uudelleenkirjoitusehdot |
%{HTTP_REFERER} | Se on Apachen sisäänrakennettu muuttuja Tämä muuttuja voi saada URL-osoitteen pyyntöviestin otsikkotiedoissa, kun käyttäjä käyttää. Yhdistä pyynnössä oleva viittausarvo |
!^http://www.e2.com/.*$ | Mikä tahansa URL-osoitteen alla oleva tiedosto (.*: vastaa yhtä tai useampaa mitä tahansa merkkiä) Osoittaa, että se ei vastaa merkkijonoa, joka alkaa http://www.e2.com/ ja päättyy yhteen tai useampaan merkkiin |
[NC] | Suodatus ei erota kirjainkoolla |
RewriteRule | Määritä uudelleenkirjoitussäännöt |
.*.(gif|jpg|swf)$ http://www.e2.com/error.png | Kun edellinen uudelleenkirjoitusehto vastaa, jos pyydetyn URL-osoitteen lopussa on .gif, .jpg tai .swf Sitten pyyntö ohjataan osoitteeseen http://www.e2.com/error.png .*: vastaa mitä tahansa määrää mitä tahansa merkkejä .: Pakomerkin poistama piste, tässä on yksinkertaisen pisteen merkitys |
Tallenna ja poistu, käynnistä palvelu uudelleen.
Lopuksi tulimme asiakaspalvelimeen (Win10) testaamaan, ettei selain joutuisi kuvan välimuistiin, joten käytä Ctrl + Shift + Delete -pikanäppäimiä selaimen välimuistin tyhjentämiseen.
Vieraile sitten osoitteessa www.e2.com ja kaikki toimii hyvin
Kun vierailet osoitteessa www.e1.com, varastetusta kuvalinkistä tulee uudelleenohjattu error.png-kuva.