Apache配置入门笔记

转载 2015年11月18日 20:14:23
Apache配置入门笔记
2011-10-24      0 个评论      
收藏    我要投稿

  • http://www.2cto.com/os/201110/108811.html

  • 随便记录一下,不求严谨,但求无原则性错误。-- DebaoZhang 20111023

Apache是一个http服务器,在无连接的时候,它除了监听配置文件中指定的IP地址和TCP端口号外不做任何工作;当一个请求出现在一个有效的端口时,Apache接受HTTP请求并分析其头部,然后它根据配置文件中设定的规则,做出某种合适的动作。

Apache通过一个配置文件进行设置

  • 配置文件是编译期被指定的(通常叫 httpd.conf)
  • 两个例子:
    • C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf

    • /etc/apache2/apache2.conf

  • 可以通过命令行参数 -f 指定

  • 配置文件内通过include可以包含其他的配置文件

绑定端口与虚拟主机

用 Listen 指定要绑定的端口号

  • 可以指定具体的IP
  • 可以用多条命令指定多个端口号

 

Listen 80
Listen 127.0.0.1:8080
Listen 10.0.2.15:8081
Listen [fe80::222:5fff:feb9:82d0]:8888

不同的IP和端口组合可以用来做虚拟主机,这需要通过VirtualHost进一步配置(必须先用Listen设置监听地址)

 

<VirtualHost 127.0.0.1:8080>
...
</VirtualHost>
<VirtualHost 10.0.2.15:8081>
ServerNname host.example.com
...
</VirtualHost>
<VirtualHost 10.0.2.15:8081>
ServerNname host.example2.com
...
</VirtualHost>

虚拟主机可以基于

  • IP地址
  • 端口号
  • 域名(通过HTTP请求header中的Host字段)

路径转换?

我们在浏览器中打交道的是一堆url:

http://www.example.com/index.html
http://www.example.com/faq.html?#question10
http://www.example.com:8080/cgi-bin/draw.cgi?type=rect
http://user:pass@www.example.com/

浏览器通过GET或POST想服务器发送请求

GET /index.html HTTP/1.1 Host:www.example.com 

服务器此时需要根据这个路径发送一个合适的文件给浏览器。

  • 如果请求的是磁盘上的静态文件,此时需要的是到磁盘文件系统的映射
  • 如果请求的是动态生成的文件,仍需要能找到脚本或程序才行

DocumentRoot

比如,前面请求的 /index.html 对应磁盘的哪个文件。则需要DocumentRoot指定一个目录作为根目录。

比如:

DocumentRoot /var/www

DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
  • 注:结尾不再加一个斜杠
  • 每一个虚拟主机也都该指定自己的DocumentRoot

还有一个ServerRoot的东西,是用来配置服务器的配置文件、日志文件等所在目录的,与这儿没什么关系。

Alias?

可能还需要访问位于DocumentRoot之外的文件

Alias /docs /var/web

这样一来,http://www.exemaple.com/docs/... 被映射到该目录 www.2cto.com

还有一个ScriptAlias,功能类似,只是其内容均被视为脚本。

ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/"

这两个命令还有两个对应的支持正则匹配的版本

  • AliasMatch

  • ScriptAliasMatch

其他

比如:

  • linux 可以使用soft link方式(并在Option中设置FollowSymLinks)

  • 使用mod_userdir模块的UserDir指令

  • 使用重定向功能 Redirct
  • ...

当然实在不存在的东西,只能404错误了

文件和目录设置

对目录的单独设置是通过Directory进行的

<Directory /var/web/dir1>
Options +Indexes
</Directory> 

对文件的单独设置是通过Files进行

<Files private.html>
Order allow,deny
Deny from all
</Files> 

在路径上,尽管它们都可以接受shell风格通配符,但更复杂的匹配则需要使用相应的支持正则的版本

  • DirectoryMatch

  • FilesMath

.htaccess

可以通过在目录下放置一个.htaccess文件对该目录进行控制。

主配置文件内的:

<Directory /www/htdocs/example>
AddType text/example .exm
</Directory> 

等价于在该目录下的.htaccess文件中放入:

AddType text/example .exm 

但这个不建议被使用(除非没有主配置文件的设置权限)了。

  • .htaccess 文件的名字可以改成其他的,通过 AccessFileName指令

  • 该文件内可以使用哪些指令,可通过AllowOverride进行设置

  • AllowOverride 设置为None(默认值是All) 可完全禁止 .htaccess的使用

  • 这个文件与授权控制无关!!

Location

与前面的Directory和Files针对的磁盘文件路径不同,Location设置的是URL地址中路径部分。

比如:

<Location /private>
Order Allow,Deny
Deny from all
</Location> 

将禁止访问http://www.example.com/private123等所有以 /private 开头的路径

认证与授权

这个东西会3组模块(真的比较繁...,使用LoadModule加载):

首先设置认证类型(使用AuthType指令,目前只支持两种?)

  • Basic
  • Digest
  • ...

根据认证类型选择认证支持模块(通过AuthBasicProvider或AuthDigestProvider)设置,提供密码等验证信息

  • AuthBasicProvider

    • file (默认值)
    • dbm
    • dbd
    • ...
  • AuthDigestProvider

    • file
    • dbm

设置授权支持模块(参考Require指令?),意图是:如何使用前面的密码信息?

简单例子

 

AuthType Basic
AuthName "From Example.com"
#AuthBasicProvider file
AuthUserFile /usr/apache2/passwd/passwords
Require user debao 
  • AuthType 选择basic认证方式

  • AuthName 是用户看到的信息(同一个name的浏览器也可以自动处理)

  • AuthBasicProvider 选择 file,这是默认值

  • AuthUserFile 设置密码文件

  • Require user 控制密码文件中哪些用户可以通过授权(使用Require valid-user可是使得所有密码正确的用户通过授权)

密码文件通过htpasswd来生成,对于digest方式,则需要使用htdigest来生成密码文件。

Deny Allow

这二者可以提供简单的基于IP地址的访问控制

Order deny,allow
Deny from all
Allow from 192.168.0.2

文件类型

当浏览器请求一个文件时,服务器一般都需要同时提供mime信息

  • TypesConfig 指令指定一个包含扩展名和mime对应关系的文件

  • 使用 AddType 指令添加新的对应关系

  • MimeMagicFile 指定一个包含文件开头的魔串和mime对应关系的文件

  • DefaultType 指定默认类型

对于纯文本文件,如果让服务器提供编码信息。AddDefaultCharset指令可以做到,不过这会覆盖html等文件自身提供的编码信息。

CGI

使用 ScriptAlias指令可以设置cgi目录

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/ 

如果在该目录之外的以某种后缀结尾(.py)的文件作为脚本,则需要使用

<Directory /home/*/public_html>
Options +ExecCGI
AddHandler cgi-script .py
</Directory> 

首先是Options中允许CGI脚本执行,然后使用AddHandler设置。

如果某个目录下全是cgi脚本,则可以使用

SetHandler cgi-script

wsgi

对于python来说,CGI方式应该不怎么使用了吧。主要是wsgi这种方式了。

 

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /wiki "F:/Moin/mywiki/moin.wsgi"

参考

类与对象的基本定义——学习笔记(根据李兴华老师《Java8编程开发入门》网课记录)

网课来源http://study.163.com/course/courseLearn.htm?courseId=1455026#/learn/video?lessonId=1740178&cours...
  • weixin_40574148
  • weixin_40574148
  • 2018年01月25日 10:40
  • 36

Python3萌新入门笔记(1)

在之前的教程中,我们已经学会了安装Python以及PyCharm。在这里,我们打开PyCharm,它是一种Python IDE(集成开发环境)。在这个软件中,我们来学习Python的基础知识。首先,我...
  • xingbb99
  • xingbb99
  • 2018年01月29日 09:28
  • 55

JDBC入门——笔记

1. JDBC的简介 1.1 jdbc:Java DataBase Connectivity,Java数据库的连接 1.2 比如有一台电脑,想在电脑上安装显卡,需要显卡的驱动,由显卡生产厂商提供 1....
  • zy_tiger
  • zy_tiger
  • 2016年07月13日 16:03
  • 2491

Java基础入门笔记-新建类

Java基础入门笔记-新建类
  • qq78442761
  • qq78442761
  • 2018年01月03日 14:32
  • 174

MySQL入门之操作笔记

管理机制 数据类型 int类型:细分种类更多 大文件类型 日期格式:时间和日期分开!更详细!多一点!但是对于日期的计算比较麻烦! 可以先按照Oracle数据库里面的几张表,创建MySQL下的表进行试...
  • lzjsqn
  • lzjsqn
  • 2017年01月12日 17:16
  • 645

<C#入门经典>学习笔记1之初识C#

序言 选择《 C#入门经典第五版》作为自学书籍,以此记录学习过程中的笔记与心得。C#简介 1. C#是一种块结构的语言 2. C#区分大小写C#变量 C#的...
  • baidu_34513951
  • baidu_34513951
  • 2016年04月02日 10:56
  • 799

安卓基础到入门学习(复习笔记)

一、Android 基本常识1、写 10 个简单的 linux 命令mkdir 创建文件夹 rmdir 删除文件夹 rm 删除文件 mv 移动文件 cp 拷贝文件 cat 查看文件 tail 查看文件...
  • android_ty
  • android_ty
  • 2016年05月06日 11:18
  • 1905

Apache配置笔记

一.认识和安装apache 1.认识apache (1)apache是一种开源软件,是当前最流行web服务器之一 (2)apache支持DSO,可扩展性很强 (3)apache的安全性和稳定性...
  • leafe920
  • leafe920
  • 2012年10月30日 10:20
  • 244

RabbitMQ 笔记 - 入门篇

本文出自于EumJi个人博客,仅限于学习用途的转载,转载请注明出处http://www.eumji025.com/article/details/256524 前言 本部分专题是个人学习Ra...
  • jsu_9207
  • jsu_9207
  • 2017年06月03日 12:11
  • 524

算法竞赛入门经典学习笔记(1)

1.输出为浮点数 printf("%.1lf\n,8.0/5.0"); (1)小数点之后的1代表结果小数点后的位数; (2)整数值用%d输出,实数用%1f输出。 2.输入 #include #incl...
  • CystalVon
  • CystalVon
  • 2016年07月07日 21:56
  • 222
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Apache配置入门笔记
举报原因:
原因补充:

(最多只允许输入30个字)