wKiom1Mq4niyBB_2AAA5TEOZv5A795.jpg

一、CGI的配置

CGI(公共网关接口[Common Gateway Interface])    定义了网站服务器与外部内容协商程序之间交互的方法,通常是指CGI程序或者CGI脚本,是在网站上实现动态页面的最简单而常用的方法

要让CGI程序能正常运作,必须配置Apache以允许CGI的执行,我们在上次的编译安装时已经配置允许cgi的执行了

如果没有启用则编辑/etc/http24/httpd.conf

LoadModule alias_module modules/mod_alias.so //把前面的#号拿掉
LoadModule cgi_module modules/mod_cgi.so //把前面的#号拿掉


我们来先写一个简单的CGI脚本

先到/usr/local/apache1/cgi-bin目录下创建脚本test,内容如下

#!/bin/bash
cat <<EEE
Content-Type: text/html
<pre>
<h1>The time is :`date`</h>
</pre>
EEE

给tset以执行权限

chmod +x test

配置站点目录属性

允许使用mod_cgi模块执行CGI脚本

wKioL1Mq3K6ybhxNAAGHxfkIcRM343.jpg

这样就可以在访问脚本时显示出脚本执行内容了


二、配置虚拟主机

     虚拟主机是在一台服务器上同时运行多个网站业务,基于IP的虚拟主机可以根据不同的IP地址以及端口号定位不同的网站请求,但基于IP的虚拟主机需要独立的IP地址定位连接的网站,而目前IP地址是互联网的稀缺资源,所以很多时候我们更喜欢基于域名的虚拟主机,服务器可以根据客户端访问HTTP的头部信息来实现网站的分离解析,客户端可以使用不同的域名访问位于同一IP地址的服务器资源。


我们这里就讲一下基于域名的虚拟主机的搭建

编辑/etc/httpd24/extra目录下的httpd-vhosts.conf文件

[root@stucw ~]# vim /etc/httpd24/extra/ httpd-vhosts.conf

添加以下内容

<VirtualHost *:80>
    ServerName www.abc.com
    DocumentRoot "/usr/local/apache1/docs/abc"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
<Directory "/usr/local/apache1/docs/abc">
 Options Indexes FollowSymLinks
 AllowOverride None
 Require all granted
 </Directory>
</VirtualHost>
<VirtualHost *:80>
 ServerName www.asd.com
 DocumentRoot "/usr/local/apache1/docs/asd"
<Directory "/usr/local/apache1/docs/asd">
 Options Indexes FollowSymLinks
 AllowOverride None
Require all granted
 </Directory>
</VirtualHost>


分别在/usr/local/apache1/docs/asd和/usr/local/apache1/docs/abc下创建网页文件,内容自定


编辑/etc/httpd24/httpd.conf

把主站点目录注释掉,启用httpd-vhosts.conf配置文件

wKiom1MqzKLhtpHwAAApruVxvQw258.jpg


wKioL1MqzIeD317VAAA1f1Iu8do953.jpg


重启服务测试

wKiom1MqzMfArxYiAADx4hk2cZA831.jpg


wKioL1MqzK7y-FRpAAENskXsDRU403.jpg


三、认证机制

基于用户认证的机制

编辑/etc/http24/httpd.conf

添加认证区域,假如访问/usr/local/apache1/htdocs/1 需要用户密码

<Directory "/usr/local/apache1/htdocs/1">
            Options None        
            AllowOverride AuthConfig //访问需要认证
            AuthType Basic          //认证类型为基本认证
            AuthName "Private Area" //输出的认证标题
           AuthUserFile /usr/local/apache1/.htpasswd //认证的文件地址
            Require valid-user  //所有合法用户都可以认证
</Directory>


生成认证文件

[root@stucw apache1]# htpasswd -c -m .htpasswd cw //在/usr/local/apache1下生成.htpasswd文件,用户名为cw


认证如下图

wKioL1MphnexA3kyAAGMDb6XEBk606.jpg

wKiom1MphrWRP1qFAAR1EyRySYs690.jpg


四、 https协议

TCP/IP 网络产品的标准是 SSL ,对于 Internet 上普遍使用的超文本传输协议(HTTP)而言,其加密后的协议称为 HTTPS,缺省采用 443 端口。
HTTPS 数据是加密以后传输的,因此能有效保护在网络上传输的个人隐私信息。

1.创建服务器的私钥

[root@stucw extra]# cd /etc/pki/CA
[root@stucw private]# (umask 077;openssl genrsa 2048 > private/cakey.pem


2.CA生成自签证书

wKioL1MplomQINEIAAIyU_5j2G8025.jpg


3.创建必要的文件

[root@stucw CA] touch index.txt serial crlnumber
[root@stucw CA] echo 01 >>serial


4.在本机生成个http的密钥证书(因为在本机上做测试,因此在本地上再生成个密钥证书)

生成密钥httpd.key

[root@stucw ~]# cd /etc/httpd24
[root@stucw httpd24]# (umask 077;openssl genrsa 1024 >httpd.key)


生成证书httpd.csr

[root@stucw httpd24]# openssl req -new -key httpd.key -out httpd.csr


5.签署证书生成httpd.crt

[root@stucw httpd24]# openssl ca -in httpd.csr -out httpd.crt -days 3665


6. 配置ssl模块

6.1.编辑/etc/httpd24/httpd.conf

启用mod_ssl模块(把前面的#去掉)

wKiom1MqzfSx5Ng7AABC3Bvk6qQ531.jpg


启用mod_socache_shmcb模块(把前面的#去掉)

wKiom1MqzhmhxpiKAABIZNuBTLU818.jpg


启用ssl加密认证配置文件(把前面#去掉)

wKioL1MqzjzyANFbAACX4zbrWGY935.jpg


6.2.编辑/etc/httpd24/extra/httpd-ssl.conf

修改其中证书与私钥的文件地址

wKioL1MqzoCij6w9AAF0flzeg5o224.jpg


6.3.重启服务,测试

[root@stucw ~]#  Service httpd24 restart

wKiom1MqzuiS1AjWAAGje3NXq18453.jpg

wKioL1Mqzs-D966KAADOAM9lSFs400.jpg

因为window上没有证书不能安全访问


7.在window上安装CA证书

把/etc/pli/CA/cacert.pem这个CA证书拷到window上,改名为cacer.crt,安装此证书

wKiom1MqzzqTCnLbAAQnl4yos6E953.jpg

wKioL1MqzzHieF7nAAJei2uR4BQ725.jpg


在windows 中C:\Windows\System32\drivers\etc\hosts

添加172.16.251.248  www.linux.com这条记录

这样我们就可以通过https加密访问了

wKiom1Mqz4igtqqHAAQYY98LGow426.jpg


我们还可以在linux上测试

[root@stucw ~]# openssl s_client -connect www.linux.com:443 -CAfile /etc/pki/CA/cacert.pem

这里就不作演示了。


五、配置mod_status

httpd内生的status信息,且此信息可以通过web预以显示

编辑/etc/httpd24/httpd.conf,事先确保mod_status模块启用

wKioL1Mqz_PjX6ymAABKElYalyI208.jpg


启用配置文件

Include /etc/httpd24/extra/httpd-info.conf  //前面#去掉


编辑/etc/httpd24/extra/httpd-info.conf添加以下内容

<Location /server-status>               //url 为server-status
              SetHandler server-status
               AuthType Basic     //访问httpd的status信息需要通过用户加密认证才可以访问
              AuthName "Server Status"
              AuthUserFile "/usr/local/apache1/.htpasswd"
                Require valid-user
                Order deny,allow
                Allow from all
 </Location>


重启服务,测试

wKioL1Mq0vrysRwLAAR0me-hMAo720.jpg


以上就是httpd的status内容


六、配置mod_deflate

使用mod_deflate模块压缩页面优化传输速度

编辑/etc/httpd24/httpd.conf,事先确保mod_deflate模块启用

wKioL1Mq1bijQ9iFAABTKqcufxA911.jpg


在httpd.conf中添加以下内容

# mod_deflate configuration
 Include /etc/httpd24/extra/deflate.conf   //启用deflate.conf配置文件


在/etc/httpd24/extra下创建deflate配置文件

[root@stucw extra]# vim deflate.conf
SetOutputFilter DEFLATE
          # Restrict compression to these MIME types
          AddOutputFilterByType DEFLATE text/plain
          AddOutputFilterByType DEFLATE text/html
          AddOutputFilterByType DEFLATE application/xhtml+xml
          AddOutputFilterByType DEFLATE text/xml
          AddOutputFilterByType DEFLATE application/xml
          AddOutputFilterByType DEFLATE application/x-javascript
          AddOutputFilterByType DEFLATE text/javascript
          AddOutputFilterByType DEFLATE text/css
                                                                                                                                                                                                                                                            
          # Level of compression (Highest 9 - Lowest 1)
          DeflateCompressionLevel 9
                                                                                                                                                                                                                                                            
          # Netscape 4.x has some problems.
          BrowserMatch ^Mozilla/4 gzip-only-text/html
                                                                                                                                                                                                                                                            
          # Netscape 4.06-4.08 have some more problems
          BrowserMatch ^Mozilla/4\.0[678] no-gzip
                                                                                                                                                                                                                                                            
          # MSIE masquerades as Netscape, but it is fine
          BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html


重启测试

wKiom1Mq1tGT8O4GAAYTcHPVNJI925.jpg

从上图看出了通过gzip压缩传输,从而提高了传输速度