HTTP基础及基本配置

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
访问控制,不限时长
简介:

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 用户用户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,如需转载请自行联系原作者

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
6月前
|
缓存 Linux Shell
RHEL7部署http应用配置共享yum源
RHEL7部署http应用配置共享yum源
254 0
|
6月前
File和FTP和HTTP软件配置
File和FTP和HTTP软件配置
|
5月前
|
网络协议
windows_server2012搭建iis并配置http重定向 iis转发
windows_server2012搭建iis并配置http重定向 iis转发
320 1
|
3月前
|
XML 安全 Android开发
Flutter配置Android和IOS允许http访问
Flutter配置Android和IOS允许http访问
119 3
|
4月前
|
存储 运维 监控
函数计算产品使用问题之如何在控制台配置HTTP触发器并使用HTTP请求触发
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
网络协议 应用服务中间件 nginx
Nginx的http块sendfile,keepalive_timeout的配置指令说明
Nginx的http块sendfile,keepalive_timeout的配置指令说明
|
5月前
|
Java 应用服务中间件 Apache
Apache HTTP配置反向代理入门
Apache HTTP配置反向代理入门
424 0
Apache HTTP配置反向代理入门
|
5月前
|
XML Web App开发 JSON
HTTP代理神器Fiddler的配置
HTTP代理神器Fiddler的配置
|
5月前
|
Windows
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
iis配置http重定向302转发get请求并去掉最后的斜杠/ iis重定向 iis去除url最后的斜杠 iis重定向链接斜杠(已解决)
167 0