Как установить заголовок с занятым 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

Другие вопросы по тегам