日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP基础及基本配置

發布時間:2025/3/18 编程问答 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP基础及基本配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTTP基礎及基本配置

1、配置監聽的地址和端口;

? ? Listen [IP:]PORT

? ? ? ? ? ? 例如:Listen 80?監聽所有80端口

2、配置所選用的MPM的屬性

配置使用編譯進不同MPMhttpd,編輯/etc/sysconfig/httpd配置文件,定義如下行:

? ? HTTPD=/usr/sbin/httpd.worker


MPM:多道處理模塊

prefork: 一個進程響應一個請求;

? 主進程功能

? ? ?(1) 綁定特權端口;

? ? ?(2) 派發或回收子進程;

? ? ?(3) 讀取分析主配置文件;

worker:一個進程生成多個線程,一個線程響應一個請求;

? ? ? ? 默認使用的是prefork模型、如果要使用worker模型,要在配置文件里啟用

event?在httpd-2.2?版本上只是測試的

? ? ? ?httpd命令選項:

? ? ? ? ? ? ?httpd -h:列出所有選項

? ? ? ? ? ? ?httpd -l:顯示核心模塊

httpd -D:顯示所有已裝載的模塊 ?

httpd -t:測試配置文件

? ? ?# vim?/etc/httpd/conf/httpd.conf打開配置文件:

? ? ?<IfModule prefork.c>條件性指令,判斷這個模塊是否存在,存在下面的配置就生效

? ? ?StartServers ? ? ? 8?? ?剛啟動web服務的時候,啟動幾個空閑進程

? ? ?MinSpareServers ? ?5?? 最小空閑進程數

? ? ?MaxSpareServers ? 20?? 最大空閑進程數

? ? ?ServerLimit ? ? ?256?? ?最多允許并發的進程活動個數

? ? ?MaxClients ? ? ? 256?? 服務器允許連進來的客戶端數目

? ? ?MaxRequestsPerChild ?4000?一個進程最多可以處理多少個請求

? ? ?</IfModule>

3、配置服務器支持keep-alived是否支持常連接

? ? ? KeepAlive {On|Off}

? ? ? ? ?對于比較空閑的服務器,建議KeepAlive?on;對于非常忙的服務器,建議KeepAlive?off

? ? ? KeepAliveTimeout 2??最多允許使用2

? ? ? MaxKeepAliveRequests 50??一次連接之內,最多允許50個資源請求

4、配置加載的模塊

? ? ? LoadModule foo_module modules/mod_foo.so

5、配置站點根目錄

? ? ? DocumentRoot ""?? ? 定義網頁存放目錄

? ? ?<Directory "FS_PATH">

? ? ?</Directory>

? ? ?<Location "URL">

? ? ?</Location>

例如/var/www/html/images/logo.jpg根目錄/var/www/html,那么我們的訪問路徑就是:http://www.magedu.com/images/logo.jpg

6、配置頁面文件訪問屬性

? ? ?<Directory "FS_PATH">

? ? ?Options

? ? ?Indexes: 是否允許索引頁面文件,建議關閉;除非提供專門下載可以打開

? ? ?FollowSynLinks: 是否跟隨軟鏈接文件;不安全。

? ? ?SymLinksifOwnerMatch:是屬主的話允許鏈接

? ? ?ExecCGI:是否允許執行CGI腳本;

? ? ?All

? ? ?None

? ? ?</Directory>

7、訪問控制

基于客戶端訪問控制:(基于ip地址訪問控制

Order:定義allowdeny哪個為默認法則;寫在后面的為默認法則:寫在前面的指令沒有顯式定義的即受后面的指令控制;

? ? (1) Order allow,deny

? ? ? ? ? Allow from 172.16.0.0/16?? 僅允許172.16.0.0/16?網段內客戶訪問

? ? (2) Order allow,deny

? ? ? ? ? Deny from 172.16.4.12 拒絕所有用戶訪問

? ? (3) Order allow,deny

? ? ? ? ? Deny from 172.16.4.12

? ? ? ? ? Allow from 172.16.0.0/16

? ? ? ? ?地址范圍匹配越小的是最佳匹配,172.16.4.12 最小,所以為拒絕172.16.4.12 網段內客戶訪問

基于用戶訪問控制

8、userdir

? ?讓每個用戶都擁有個人站點:http://HOST/~username/

? ?需要啟用UserDir public_html

? ? ? ? 需要設定用戶對家目錄文件的訪問控制權限

9、定義默認主頁面:

? ? ? ? ?DirectoryIndexindex.php index.jsp index.html

? ? ? ? ?默認先找最左側的,也就是index.php

10、配置日志功能 ? ? ? 默認路徑在/var/log/httpd/

日志有兩類:訪問日志(格式需自定義)、錯誤日志

? ?錯誤日志:

? ? ? ?ErrorLog "/path/to/error_log_file"

? ?訪問日志:

? ? ? ?CustomLog /PATH/TO/CUSTEOM_LOG_FILE LOGFORMAT, 例如:

? ? ? ?CustomLog logs/access_log combinedcombined

? ?LogFormat?定義格式

? ? ? 安裝httpd-manual包,service httpd reload重新載入服務,在瀏覽器中鍵入172.16.4.1/manual/就可以在本地訪問了:

? ? ?Log Files?==>?format strings 就可以查看定義的日志格式了

11、設定默認字符集

? ? ? AddDefaultCharset UTF-8

12、路徑別名

? ? ? DocumentRoot "/web/htdocs"

? ? ? http://www.magedu.com/images/logo.gif ?==> /web/htdocs/images/logo.gif

? ? ? 定義別名為/www/static/

? ? ? 訪問路徑就是/www/static/logo.gif

? ?首先:定義Alias /images/ "/www/static/"

? ?然后:創建目錄/www/static/??在目錄下創建文件index.html ? ?在文件里面編輯內容 ? ?

? ?最后:重新載入service httpd reload

? ?我們重新訪問172.16.0.1/images時,看到的內容會變成所定義別名的路徑下的內容。

13、腳本路徑別名:

CGI:協議

? ? ScriptAlias /PATH/ /PATH/TO/SOMFEDIR/

? ? 例如:ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"或者ScriptAlias /cgi-bin"/var/www/cgi-bin"

? ? 注意/cgi-bin/var/www/cgi-bin后面要保持一致

? ? 操作:

? ? ? ? #cd /etc/httpd/conf

? ? ? ? #mkdir -pv /website/cgi-bin/

? ? ? ? #vim /website/cgi-bin/test.sh

CGI測試腳本

#!/bin/bash

#

cat << EOF

Content-Type: text/html

<pre>

The hostname is: `/bin/hostname`.

The time is: `date`.

</pre>

EOF

給腳本執行權限,腳本執行結果為:

Content-Type: text/html

<pre>

The hostname is: station93.magelinux.com.

The time is: Sat Aug 17 01:11:13 CST 2013.

</pre>

# end of cgi script file

用瀏覽器訪問172.16.4.1/cgi-bin/test.sh 可以訪問到

14、基于用戶訪問控制

? ? ? DocumentRoot "/var/www/html"

? ? ? <Directory "/PATH/TO/DocumentRoot_SUBDIR">

? ? ? Options None

? ? ? AllowOverride AuthConfig?? 是否允許覆蓋

? ? ? AuthName "Realm"?? ? ? ? ?認證名稱

? ? ? AuthType Basic?? ? ? ? ? ? ?認證類型

? ? ? AuthUserFile /path/to/passwords?用戶賬戶文件叫什么,

? ? ? Require jerry tom?? ? ? ? ? ? 哪些用戶可以登陸

? ? ? </Directory>

(1) 建立用戶帳號文件

? ? ?htpasswd -c -m /path/to/password_file USERNAME

? ? ?第一次創建文件添加用戶的時候用-c選項,以后就不能用-c選項了,否則會將原來的文件內容覆蓋的。

(2) 一個配置示例

<Directory "/website/htdocs/downloads">

? ?Options Indexes

? ?AllowOverride AuthConfig

? ?AuthName "Only for employees."

? ?AuthType Basic

? ?AuthUserFile /etc/httpd/conf/.htpass

? ?Require valid-user?? ? ? ?允許所有用戶登陸

</Directory>

重新載入后,當用戶訪問172.16.4.1/website/htdocs/downloads時,會提示用戶輸入密碼。

(3)組

? ?組文件:

? ?組名:用戶1?用戶2?用戶3

? ?AuthGroupFile

? ?Require GRP_NAME

15、虛擬主機?:一個web程序服務于多個站點

虛擬主機類型:

(1)基于端口的虛擬主機:

(2)基于IP的虛擬主機:

(3)基于主機名的虛擬主機:

請求報文首部有一個Host:,保留了主機名稱,所有web服務器收到請求后,能夠看到Host所對應的是哪個主機,這樣基于主機名的虛擬主機才能實現。

虛擬主機和主服務器不能同時使用:關閉主服務器,注釋主服務器的DocumentRoot即可;

每個虛擬主機的定義:

? ?<VirtualHost IP:PORT>

? ? ? ? ServerName

? ? ? ? DocumentRoot ""

? ?</VirutalHost>

(1) 基于端口的虛擬主機

首先確保監聽在所要求的端口,然后關閉主服務器的DocumentRoot,在配置文件?/etc/httpd/conf/httpd.conf中定義:

? ?<VirtualHost?*:80> ?

? ? ? ? ?ServerName?www.a.com ?可以隨便定義,因為它不區別主機名稱

? ? ? ? ?DocumentRoot "/web/host1/"

? ?</VirutalHost>

? ?<VirtualHost?*:8080>

? ? ? ? ?ServerName?www.b.org ?

? ? ? ? ?DocumentRoot "/web/host2/"

? ?</VirutalHost>

? ?配置文件編輯完成。

目錄不存在,所以先要創建mkdir -pv /web/host{1,2}

? ? 然后編輯網頁內容進行測試#vim /web/host1/index.html

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#vim /web/host2/index.html

重啟服務。這樣基于端口就可以訪問網頁了。

(2)基于IP的虛擬主機

例如:

? ?<VirtualHost 172.16.4.180>

? ? ? ? ? ServerName?www.a.com ?

? ? ? ? ? DocumentRoot "/web/host1/"

? ?</VirutalHost>

? ?<VirtualHost 172.16.4.180>

? ? ? ? ? ServerName?www.b.org ?

? ? ? ? ? DocumentRoot "/web/host2/"

? ?</VirutalHost>

編輯網頁內容,重啟服務。這樣基于ip虛擬主機就可以訪問網頁了。

(3)基于主機名的虛擬主機

httpd-2.2: NameVirtualHost

虛擬主機單獨配置:

? ? ?CustomLog

? ? ?ErrorLog

? ? ?<Directory "">

? ? ?</Directory>

? ? ?ScriptAlias /cgi-bin/

? ? ?Alias

#NameVirtualHost *:80修改為NameVirtualHost 172.16.4.1:80

? ? ?<VirtualHost 172.16.4.180>

? ? ? ? ? ? ServerName?www.a.com ?

? ? ? ? ? ? DocumentRoot "/web/host1/"

? ? ?</VirutalHost>

? ? ?<VirtualHost 172.16.4.180>

? ? ? ? ? ? ServerName?www.b.org ?

? ? ? ? ? ? DocumentRoot "/web/host2/"

? ? ?</VirutalHost>

然后service httpd restart

用本機測試先要編輯/etc/hosts

172.16.4.1www.a.com??a.com

172.16.4.1?www.b.org?? b.org

安裝elinks包,測試

#elinks http://www.a.com進入交互式模式測試

#elinks http://www.b.org

#elinks -dump http://www.a.com可以不用進入交互式模式測試

#elinks -dump http://www.b.org





本文轉自 宋鵬超 51CTO博客,原文鏈接:http://blog.51cto.com/qidian510/1280123,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的HTTP基础及基本配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。