Как установить заголовок с занятым httpd
Я запускаю busybox httpd с помощью следующей команды:
busybox httpd -p 80 -h /var/www
Это работает, однако мне нужно установить заголовок управления кешем без кеша.
В настоящее время мой сервер добавляет только эти заголовки:
HTTP/1.0 200 OK
Content-type: text/html
Date: Thu, 28 Jun 2018 06:58:08 GMT
Connection: close
Accept-Ranges: bytes
Last-Modified: Thu, 28 Jun 2018 06:57:43 GMT
Content-Length: 45
Как я могу настроить свой сервер busybox httpd для добавления
Cache-Control: no-cache
заголовок?
2 ответа
Веб-сервер BusyBox HTTP Daemon (httpd) представляет собой собственную простую реализацию веб-сервера без широких параметров конфигурации, как вы можете видеть из документации по конфигурации OpenWRT или блока комментариев из httpd.c
источник (строки 39-60):
* httpd.conf has the following format:
*
* H:/serverroot # define the server root. It will override -h
* A:172.20. # Allow address from 172.20.0.0/16
* A:10.0.0.0/25 # Allow any address from 10.0.0.0-10.0.0.127
* A:10.0.0.0/255.255.255.128 # Allow any address that previous set
* A:127.0.0.1 # Allow local loopback connections
* D:* # Deny from other IP connections
* E404:/path/e404.html # /path/e404.html is the 404 (not found) error page
* I:index.html # Show index.html when a directory is requested
*
* P:/url:[http://]hostname[:port]/new/path
* # When /urlXXXXXX is requested, reverse proxy
* # it to http://hostname[:port]/new/pathXXXXXX
*
* /cgi-bin:foo:bar # Require user foo, pwd bar on urls starting with /cgi-bin/
* /adm:admin:setup # Require user admin, pwd setup on urls starting with /adm/
* /adm:toor:PaSsWd # or user toor, pwd PaSsWd on urls starting with /adm/
* /adm:root:* # or user root, pwd from /etc/passwd on urls starting with /adm/
* /wiki:*:* # or any user from /etc/passwd with according pwd on urls...
* .au:audio/basic # additional mime type for audio.au files
* *.php:/path/php # run xxx.php through an interpreter
Ваши варианты с BusyBox HTTPd:
- BusyBox HTTP Daemon с открытым исходным кодом. изменять
httpd.c
добавить заголовок и скомпилировать. - Ваша страница служила сценарием cgi. Он может иметь собственные заголовки в начале.
Или установите более универсальный веб-сервер, который имеет это: Nginx, Apache, Lighttpd...
docker run -d --name busybox-http -p 8080:8080 -e TZ=UTC-8 busybox sh -c " echo GMT-8 > /etc/TZmkdir -p /root/cgi-bincat > /root/cgi-bin/a.html <<EOF#!/bin/shecho -e 'Content-Type: text/plain\n' echo "hostname=[\$(hostname)], time=[\$(date'+%F %T')], query=[\${QUERY_STRING}], path=[\${PATH_INFO}]" echo "requestUrl=[\${REQUEST_URI}]" echo -e "\n=== список env:\n\$(env|sed 's/\n/
/g')" EOFchmod u+x /root/cgi-bin/a.htmlhttpd -p 8081 -h /rootcat > /root/httpd.conf <<EOFP:/:http://localhost:8081/cgi-bin/a.html/EOFhttpd -p 8080 -c /root/httpd.conf Sleep Infinty "
локон локального хоста: 8080/a/b?c=1
Результат:
имя хоста=[e95c54e5ff19], время=[2021-01-19 23:20:42], запрос=[c=1], путь=[/a/b] requestUrl=[/cgi-bin/a.html/a/b?c=1]
=== список окружения: GATEWAY_INTERFACE=CGI/1.1HOSTNAME=e95c54e5ff19SHLVL=2REMOTE_ADDR=[::ffff:127.0.0.1]HOME=/rootQUERY_STRING=c=1HTTP_USER_AGENT=curl/7.29.0REMOTE_PORT=51456HTTP_ACCEPT=/SCRIPT_FILENAME=/root/cgi-bin/a.htmlHTTP_HOST=localhost:8080REQUEST_URI=/cgi-bin/a.html/a/b?c=1SERVER_SOFTWARE=busybox httpd/1.31.1PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binSERVER_PROTOCOL=HTTP/1.0PATH_INFO=/a/bREQUEST_METHOD=GETPWD=/root/cgi-binSCRIPT_NAME=/cgi-bin/a.html