busybox 配置httpd的方法


看了一下它的源碼,沒太懂,好像CGI只能放在/cgi-bin/下,我放在其他目錄就不能運行了,不知道如何配置,它代碼里的注釋沒看懂,誰能給解釋一下,要是有個完整的例子就更好了,謝謝了。

18 个解决方案

#1


Busybox 1.0 的 httpd
強到沒力! 用 busybox 1.0 , 基本系統全部搞定
http 還有 cgi 功能
基本用法: httpd -h /documentroot -c /etc/httpd.conf

/*
* httpd implementation for busybox
*
* Copyright (C) 2002,2003 Glenn Engel 
* Copyright (C) 2003 Vladimir Oleynik 
*
* simplify patch stolen from libbb without using strdup
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*****************************************************************************
*
* Typical usage:
* for non root user
* httpd -p 8080 -h $HOME/public_html
* or for daemon start from rc script with uid=0:
* httpd -u www
* This is equivalent if www user have uid=80 to
* httpd -p 80 -u 80 -h /www -c /etc/httpd.conf -r "Web Server Authentication"
*
*
* When a url contains "cgi-bin" it is assumed to be a cgi script. The
* server changes directory to the location of the script and executes it
* after setting QUERY_STRING and other environment variables. If url args
* are included in the url or as a post, the args are placed into decoded
* environment variables. e.g. /cgi-bin/setup?foo=Hello%20World will set
* the $CGI_foo environment variable to "Hello World" while
* CONFIG_FEATURE_HTTPD_SET_CGI_VARS_TO_ENV enabled.
*
* The server can also be invoked as a url arg decoder and html text encoder
* as follows:
* foo=`httpd -d $foo` # decode "Hello%20World" as "Hello World"
* bar=`httpd -e ""` # encode as "<Hello World>"
* Note that url encoding for arguments is not the same as html encoding for
* presenation. -d decodes a url-encoded argument while -e encodes in html
* for page display.
*
* httpd.conf has the following format:

* A:172.20. # Allow any address that begins with 172.20
* A:10.10. # Allow any address that begins with 10.10.
* A:10.20 # Allow any address that previous set and 10.200-209.X.X
* A:127.0.0.1 # Allow local loopback connections
* D:* # Deny from other IP connections
* /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/
* .au:audio/basic # additional mime type for audio.au files

* A/D may be as a/d or allow/deny - first char case unsensitive
* Deny IP rules take precedence over allow rules.


* The Deny/Allow IP logic:

* - Default is to allow all. No addresses are denied unless
* denied with a D: rule.
* - Order of Deny/Allow rules is significant
* - Deny rules take precedence over allow rules.
* - If a deny all rule (D:*) is used it acts as a catch-all for unmatched
* addresses.
* - Specification of Allow all (A:*) is a no-op

* Example:
* 1. Allow only specified addresses
* A:172.20. # Allow any address that begins with 172.20
* A:10.10. # Allow any address that begins with 10.10.
* A:10.10 # Allow any address that previous set and 10.100-109.X.X
* A:127.0.0.1 # Allow local loopback connections
* D:* # Deny from other IP connections

* 2. Only deny specified addresses
* D:1.2.3. # deny from 1.2.3.0 - 1.2.3.255
* D:2.3.4. # deny from 2.3.4.0 - 2.3.4.255
* A:* # (optional line added for clarity)

* If a sub directory contains a config file it is parsed and merged with
* any existing settings as if it was appended to the original configuration
* except that all previous IP config rules are discarded.
*
* subdir paths are relative to the containing subdir and thus cannot
* affect the parent rules.
*
* Note that since the sub dir is parsed in the forked thread servicing the
* subdir http request, any merge is discarded when the process exits. As a
* result, the subdir settings only have a lifetime of a single request.
*

* If -c is not set, an attempt will be made to open the default 
* root configuration file. If -c is set and the file is not found, the
* server exits with an error.

*/


#2


這個就是它源碼里的注釋啊,沒看懂才到這里問的呀,老大

#3


在代碼的這個文件里面有注釋:

networking/httpd.c

#4


cgi handle is a configure option for httpd applet.
cgi script must placed to /cgi-bin/ (from httpd root dir)

#5


#6


看來看去,cgi好像必須放在/cgi-bin/里,這樣比較郁悶啊,另外,任何讓它顯示一個目錄的索引啊,比如說,http://192.168.0.1/123/,然后頁面顯示123目錄中的所有文件

#7


http://blog.chinaunix.net/u/27204/showart_422875.html

busybox 配置錯誤的解決方法

#8


頂,等高人出現

#9


頂,等高人出現

#10


我沒有去研究,但我覺得有源代碼應該可以在知道如何獲得路徑的吧。

#11


頂,等高人出現

#12


頂,等高人出現

#13


Just pass by!

#14


頂,等高人出現

#15


it is hardcode about cgi folder in httpd.c, please have a good look at httpd.c!

And you can change the folder in this file!

#16


這個busybox真是挺愁人啊,結貼,散分

#17


試試

#18


結貼怎么還能回復啊

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com