Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitc26fa79c428aa692750bf3606b400731cfd6775b (patch)
Author
 Syndamia <kamen@syndamia.com>
2024-12-23 20:00:05 +0200
Committer
 Syndamia <kamen@syndamia.com>
2024-12-23 20:00:05 +0200
Files3439d29585f880ac60f1baa8caf835af27bb3443
uni-projects-c26fa79c428aa692750bf3606b400731cfd6775b.tar
uni-projects-c26fa79c428aa692750bf3606b400731cfd6775b.tar.gz
uni-projects-c26fa79c428aa692750bf3606b400731cfd6775b.zip
Parentf9bd4f8a4d965ba657fe420ea19a55049daf95b5 (diff)
referat(WT): Add configuration options syntax and a dozen values
2 files changed, 128 insertions, 0 deletions
-rw-r--r--Year 4/Web technologies/referat/css/style.css4
-rw-r--r--Year 4/Web technologies/referat/referat.html124
diff --git a/Year 4/Web technologies/referat/css/style.css b/Year 4/Web technologies/referat/css/style.css
index 21a3160..0705589 100644
--- a/Year 4/Web technologies/referat/css/style.css
+++ b/Year 4/Web technologies/referat/css/style.css
@@ -126,3 +126,7 @@ pre > code {
ol.sources > li::before, sup a, sup a:visited {
color: var(--level4);
}
+
+dt:not(:first-child) {
+ margin-top: 1em;
+}
diff --git a/Year 4/Web technologies/referat/referat.html b/Year 4/Web technologies/referat/referat.html
index 45fb1d5..868a4ee 100644
--- a/Year 4/Web technologies/referat/referat.html
+++ b/Year 4/Web technologies/referat/referat.html
@@ -290,6 +290,130 @@
По-значимо, вторият описва модулите които са налични и са активни.
При модулите допълнително имаме подразделение на два типа файлове: единия завършващ на <code>.load</code>, описващ редовете, които вмъкват този модул; и другият завършващ на <code>.conf</code>, под който се съдържат конфигурации на самия модул.<sup><a href="#src17">[17]</a></sup>
</p>
+ <p>
+ Apache със своета близко до 30-години разработка, предлага стотици опции (над 700 в най-новата си версия)!
+ Въпреки това, нужно е да се знаят само една дузина за създаване на сложни и високо-способни конфигурации.
+ </p>
+ <section>
+ <h3>Синтаксис</h3>
+ <p>
+ Съществуват два типа опции в един конфигурационен файл, които ще наречем:
+ <ol>
+ <li>
+ Примитивни, приличащи на извикване на команди:
+
+ <pre><code>Require all denied</code></pre>
+ <pre><code>Options +Includes</code></pre>
+ <pre><code>ErrorDocument 403 "Sorry, can't allow you access today"</code></pre>
+ <pre><code>Require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example</code></pre>
+ </li>
+ <li>
+ Композитни, приличащи на <code>HTML</code> маркиране и съдържащи примитивни и други композитни:
+
+ <pre><code>&lt;Directory "/"&gt;
+ AllowOverride None
+&lt;/Directory&gt;</code></pre>
+ <pre><code>&lt;Limit POST PUT DELETE&gt;
+ Require valid-user
+&lt;/Limit&gt;</code></pre>
+ <pre><code>&lt;VirtualHost 192.168.1.1 172.20.30.40&gt;
+ ServerName server.example.com
+ ServerAlias server
+
+ &lt;Directory /var/www/example_com&gt;
+ Options Indexes FollowSymLinks
+ AllowOverride All
+ Require all granted
+ &lt;/Directory&gt;
+&lt;/VirtualHost&gt;</code></pre>
+ </li>
+ </ol>
+ </p>
+ <p>
+ По конвенция, името на дадена опция е в PascalCase (<code>Require</code>, <code>Directory</code>, ...), но конкретно как изглеждат аргументи се определя от разработчика на опцията.
+ </p>
+ </section>
+ <section>
+ <h3>Глобални примитивни опции</h3>
+ <dl>
+ <dt><code>Timeout [Цяло число (секунди)]</code></dt>
+ <dd>Определя колко време Apache ще изчака за изпълнение на дадена заявка. По подразбиране е 60 секунди.</dd>
+ <dt><code>KeepAlive [Оn или Off]</code></dt>
+ <dd>Позволява на един клиент (браузър) да поддържа връзка със сървъра, по която да прекарва няколко заявки. Ако е изключена, на всяка заявка ще трябва да се установи наново връзка. По подразбиране е "On"</dd>
+ <dt><code>KeepAliveTimeout [Цяло число (милисекунди)]</code></dt>
+ <dd>Колко време да се изчака между изпращане на две заявки по една връзка, преди връзката да се прекрати. По подразбиране е 5 милисекунди.</dd>
+ <dt><code>MaxKeepAliveRequests [Цяло число (бройка)]</code></dt>
+ <dd>Максималния брой заявки, които могат да се направят по една връзка преди връзката да се затвори. Ако е 0, неограничен брой заявки са позволени! По подразбиране е 100.</dd>
+ </dl>
+ </section>
+ <section>
+ <h3>Опции за виртуални хостове</h3>
+ <dl>
+ <dt><code>&lt;VirtualHost [адрес:порт адрес:порт ...]&gt;</code></dt>
+ <dd>
+ Определя един виртуален хост, който се достъпва на даденият(ите) адрес(и).
+
+ <pre><code>&lt;VirtualHost 10.1.2.3:80&gt;
+ ...
+&lt;/VirtualHost&gt;</code></pre>
+ </dd>
+ </dl>
+ <p>
+ Останалите опции се вписват в <code>VirtualHost</code>:
+ </p>
+ <dl>
+ <dt><code>ServerName [URL адрес]</code></dt>
+ <dd>
+ Свързва адресът към който заявката е изпратена, т.е. URL-ът от който браузърът се цели да изтегли уебстраници.
+
+ <pre><code>ServerName www.example.com</code></pre>
+ </dd>
+ <dt><code>ServerAlias [Имена на хостове]</code></dt>
+ <dd>
+ Позволява алтернативни хост имена за <code>ServerName</code>. Особено полезно в ситуации в които няколко виртуални хоста имат еднакви сървърни имена. Приема <b>само</b> името на хоста, не приема порт, IP адреси, ...
+
+ <pre><code>ServerAlias server server2.example.com server2</code></pre>
+ </dd>
+ <dt><code>DocumentRoot [Път към директория]</code></dt>
+ <dd>
+ Определя директорията в която се съдържат уебстраниците, достъпни през дадения виртуален хост.
+
+ <pre><code>DocumentRoot "/var/www/example_site"</code></pre>
+ </dd>
+ <dt><code>Alias [URL път] [Път към директория/файл]</code></pre></dt>
+ <dd>
+ Позволява достъпването на файлове/директории, които се намират извън <code>DocumentRoot</code>.
+
+ <pre><code>Alias "/image" "/ftp/pub/image"</code></pre>
+ </dd>
+ <dt><code>&lt;Directory [Път към директория]&gt;</code></pre></dt>
+ <dd>
+ Слага/вдига ограничения към директория (и нейнитя под-файлове и под-директории). Най-често Apache има свободен достъп към само една предопределена директория (посочена по време на компилация). За всички останали, освен че трябва да има нужните файлови разрешения във файловата система, трябва и да се постави тази директива.
+
+ <pre><code>&lt;Directory "/usr/local/httpd/htdocs"&gt;
+ ...
+&lt;/Directory&gt;</code></pre>
+
+ Най-простата (и опасна) примитивна опция, която може да приеме, е <code>Require all granted</code>, която позволява безусловен достъп към директорията. Останалите (десетки) опции и аргументи няма да бъдат разглеждани.
+ </dd>
+ <dt><code>Redirect [Статус] [URL път] [URL адрес]</code></pre></dt>
+ <dd>
+ Създава пренасочване от стар URL път към нов URL адрес. Така се позволява пренасочванията да бъдат към страница в същия виртуален хост/сървър или към друг напълно различен. Стойността на <code>[Статус]</code> може да бъде една от:
+
+ <ul>
+ <li><code>permanent</code> (статус код 301)</li>
+ <li><code>temp</code> (статус код 302)</li>
+ <li><code>seeother</code> (статус код 303)</li>
+ <li><code>gone</code> (статус код 410)</li>
+ </ul>
+
+ Позволено е и да се изпусне, в чийто случай ще се зачете за <code>temp</code>. Ако се избере <code>gone</code>, последния аргумент не трябва да се подаде.
+
+ <pre><code>Redirect "/service" "http://foo2.example.com/service"</code></pre>
+ <pre><code>Redirect "/one" "/two"</code></pre>
+ </dd>
+ </dl>
+ </section>
</section>
<section id="sources">
<h2>Източници</h2>