web服务其四启用CGI、https、压缩功能

简介:

温馨提示:

由于上一篇己经对http编译安装完成,这篇将介绍CGI、https、压缩功能的启用。

一、启用CGI功能(CGI是什么?

由于是编译安装,在编译时己经指加载的了大多数的模块,所以在配置CGI的过程中,只要编辑/etc/httpd24/httpd.conf就可以了。

1、启用CGI模块

wKioL1Mqi_CwefO5AABuBbN_NaE582.jpg

2、启用别名模块

wKiom1MqjBfQ8W1xAABD90dtS8Y594.jpg

别名模块的作用就是将ServerRoot中的cgi-bin目录指向自定义位置

3、设置cgi-bin的别名目录

wKiom1MqlAWCpQt3AAJIei6wg1w901.jpg

提示:

什么是处理器(Handler)

"处理器"是当一个文件被调用时,Apache所执行操作的内部表现。文件一般都有基于其文件类型的隐含处理器。通常,文件都只是被服务器简单的提交,只有某些文件类型会被特别地"处理"。

常用指令

AddHandler:在文件扩展名与特定的处理器之间建立映射

SetHandler:强制所有匹配的文件被一个指定的处理器处理

利用上一个篇中的服务脚本启动服务

1
#service httpd24 start

4、书写测试CGI脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#mkdir -p /web/www/ess/
#cd /web/www/ess/
#vim test.sh
# cat /web/www/ess/test.sh
#!/bin/bash
cat  << EOF
Content-Type: text /html
<pre>
hello
new Time is : ` date `
current user:\033[0m ` whoami `
current direcory:` pwd `
< /pre >
EOF
#chmod +x test.sh

5、测试CGI功能

wKioL1MqmLeCqwtDAAE1Ycx48Mk136.jpg

竟然出错了,好吧,看错误日志

wKioL1MqmWfQyCnZAADMy1QjeHw314.jpg

注意:

APACHE错误日志:Premature end of script headers,或 malformed header from script 'filename': Bad header:XXX,这种情况,还是检查一下CGI输出的第一句话是啥。应该是形如:

Content-type:text/html\n\n

修改后格式

wKiom1MqnBaRb_bYAACXS2Itx1Y562.jpg

再次测试

wKiom1MqnHaCPm37AACpUn-3OlI626.jpg


总结:

编写CGI程序

编写CGI程序和"常规"程序之间有两个主要的不同。
首先,在CGI程序的所有输出前面必须有一个HTTP的MIME类型的头,对客户端指明所接收内容的类型,大多数情况下,像这样:

Content-type: text/html

注:MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准

其次,输出要求是HTML形式的,或者是浏览器可以显示的其他某种形式。多数情况下,输出是HTML形式的,但偶然也会输出一个gif图片或者其他非HTML的内容。
除了这两点,编写CGI程序和编写其他程序大致相同。

二、https

1、生成证书

2、开启ssl功能

1
2
3
4
#vim /etc/httpd24/httpd.conf
LoadModule ssl_module modules /mod_ssl .so
# Secure (SSL/TLS) connections
Include  /etc/httpd24/extra/httpd-ssl .conf

3、注销根目录限制,因为在后面要自定义站点目录

1
2
3
4
#<Directory />
#    AllowOverride none
#    Require all denied
#</Directory>

注:

如果在/etc/httpd24/httpd.conf文件中没有启用LoadModule socache_shmcb_module modules/mod_socache_shmcb.so,在后面配置完/etc/httpd24/extra/httpd-ssl.conf启动服务会报错,SSLSessionCache需要这个模块的支持。

3、修改配置文件(/etc/httpd24/extra/httpd-ssl.conf)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost _default_:443>
DocumentRoot  "/web/www/"
#指定目录
ServerName www.essun.com:443
#指定服务名字
ErrorLog  "/usr/local/apache/logs/error_log"
TransferLog  "/usr/local/apache/logs/access_log"
SSLEngine on
启用SSL功能
SSLCertificateFile  "/etc/httpd24/ssl_key/www.crt"
#指定web服务证书位置
SSLCertificateKeyFile  "/etc/httpd24/ssl_key/www.key"
#指定私钥位置
< /VirtualHost >

4、启动服务

1
#service httpd24 start

5、访问测试

提示:

在测试时要设置hosts文件

win7 路径为:C:\Windows\System32\drivers\etc

IP        主机名

wKioL1MqvQLhI-g2AAItGvSDwpI131.jpg

点继续。

wKioL1MqvVHyJQBmAAEh1RjiDYQ450.jpg

将CA的证书与web服务器的证书导出并添加到受信任根证书

wKioL1MqvrCyneTpAAEu9Z8lQ1Y524.jpg

提示:

1、将CA的证书导出后,将后缀改为.crt,双击安装,指定存储路径,添加到受信任的根证书颁发机构。

2、安装web服务器证书

3、查看证书信息

wKioL1MqwKqgLQw6AAE772M-a94219.jpg

三、虚拟主机

1、基于不同的FQDN访问。

前提:

在服务器端配置正向DNS解析,将测试机的DNS指向DNS服务器的IP地址。

如果是自定义目录,请注销/etc/httpd24/httpd.conf中

1
2
3
4
#<Directory />
#    AllowOverride none
#    Require all denied
#</Directory>

如果没有关闭,将会无法访问自定义目录

设置主配置文件(/etc/httpd24/httpd.conf),启用虚拟主机配置文件

1
2
# Virtual hosts
Include  /etc/httpd24/extra/httpd-vhosts .conf

/etc/httpd24/extra/httpd-vhosts.conf书写配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
     DocumentRoot  "/web/html/ess/"
     ServerName www.jgpserver.com
#    ServerAlias www.dummy-host.example.com
     ErrorLog  "logs/dummy-host.example.com-error_log"
     CustomLog  "logs/dummy-host.example.com-access_log"  common
< /VirtualHost >
<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host2.example.com
     DocumentRoot  "/web/html/test/"
     ServerName www.jgpserver.com.cn
     ErrorLog  "logs/dummy-host2.example.com-error_log"
     CustomLog  "logs/dummy-host2.example.com-access_log"  common
< /VirtualHost >

创建目录与默认页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#mkdir -p /web/html/{ess,test}
#cd /web/html/ess
#vim index.html
<!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.1//EN"  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >
<html>
         < head >
                 <meta http-equiv= "Content-Type"  content= "text/html; charset=gb2312"  />
                 <title>FQDN< /title >
         < /head >
         <body>
                 <p> hostname  is :www.jgpserver.com< /p >
                 <p>ip is:192.168.1.114< /p >
         < /body >
< /html >
#---------------------------------------------
#vim /web/html/test/index.html
<!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.1//EN"  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >
<html>
         < head >
                 <meta http-equiv= "Content-Type"  content= "text/html; charset=gb2312"  />
                 <title>FQDN_cn< /title >
         < /head >
         <body>
                 <p> hostname  is :www.jgpserver.com.cn< /p >
                 <p>ip is:192.168.1.114< /p >
         < /body >
< /html >

重启服务,测试

1
#service httpd24 start

测试www.jgpserver.com

wKioL1Mq_uDBsi0kAAB4jdfQqHM334.jpg

测试www.jgpserver.com.cn

wKiom1Mq_zaDd4dvAAB-2HK3tR4539.jpg

2、基于IP地址的虚拟主机

前提:

在Web服务端添加多块虚拟网卡,以便测试

wKioL1MrAsmj15CnAAO2O6EO_rQ860.jpg

修改配置文件(/etc/httpd24/extra/httpd-vhosts.conf )

wKiom1MrBMaR56mPAAKEm1QgLGM283.jpg

重启服务,测试

1
#service httpd24 restart

测试ip:192.168.1.234

wKioL1MrBOejUSybAABfpr_0beI522.jpg

测试ip:192.168.1.123

wKioL1MrBTXQfq1kAABqpteuX14030.jpg

3、基于端口的虚拟主机

在主配置文件(/etc/httpd24/httpd.conf)中添加监听端口

wKioL1MrBjCS9K6PAABFzh246Iw196.jpg

修改虚拟主机配置文件(/etc/httpd24/extra/httpd-vhosts.conf )

wKioL1MrCqyxnAu7AAKIzxfsrWk561.jpg

语法检查、重启服务

wKioL1MrB5yApnR6AACYPYBdSH8774.jpg

查看端口是否开启

wKiom1MrB-rzCgHsAACFuDqL4a8806.jpg

测试端口80

wKiom1MrC-mAjl96AABafsygNO8559.jpg

测试端口4800

wKioL1MrC_TjQsM8AACKZvLNcSg492.jpg

测试5800

wKiom1MrDDKwrD6yAACCcbw5o3s817.jpg

四、文本压缩

好处:

经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验

Web服务器处理HTTP压缩的过程如下:

① Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩

(Accept-Encoding 信息);

② 如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;

③ 如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;

④ 如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;

⑤ 如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;

1、在主配置文件/etc/httpd24/httpd.conf文件中启用 deflate模块

wKioL1MrDlvxTTsaAAB40VAGOyc120.jpg

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准

2、定义压缩类型、压缩等级、对特殊浏览器不支持压缩的定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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
<IfModule deflate_module>
AddOutputFilterByType DEFLATE text /plain
AddOutputFilterByType DEFLATE text /html
AddOutputFilterByType DEFLATE text /xml
AddOutputFilterByType DEFLATE text /css
AddOutputFilterByType DEFLATE text /javascript
AddOutputFilterByType DEFLATE application /xhtml +xml
AddOutputFilterByType DEFLATE application /xml
AddOutputFilterByType DEFLATE application /rss +xml
AddOutputFilterByType DEFLATE application /atom_xml
AddOutputFilterByType DEFLATE application /x-javascript
AddOutputFilterByType DEFLATE application /x-httpd-php
< /IfModule >

3、查看结果

wKioL1MrEYSx4bmoAAPFNqDyAeI734.jpg

如果想了解请求报文响应报文属性的,请参阅http://essun.blog.51cto.com/721033/1379932

五、利用mod_status查看apache服务相关信息

1、启用状态模块、info文件

1
2
3
4
#vim /etc/httpd24/httpd.conf
LoadModule status_module modules /mod_status .so
# Real-time info on requests and configuration
Include  /etc/httpd24/extra/httpd-info .conf

2、修改/etc/httpd24/extra/httpd-info.conf文件

wKiom1MrFErhjz8eAACHH2r67qE191.jpg

Require [host|ip]对那一个ip或主机响应

3、重启服务、测试

wKioL1MrFLTg83E_AAK2xXkpd8A586.jpg

======================================完=============================================










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1380687,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
314 63
|
3月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
5月前
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
217 35
|
4月前
|
开发者
(WEB CAD online )在线CAD实现圆孔标记功能
本文介绍了通过自定义实体 `McDbTestRoundHoleMark` 实现圆孔标记功能的方法。该功能支持多象限标记、可调节标记角度、多重标记及动态编辑,并自动计算包围盒以优化空间定位与选择操作。核心实现包括类结构定义、数据序列化、标记数据设置、夹点编辑及实体绘制等步骤。用户可通过插件初始化注册并创建圆孔标记,适用于工程图纸标注场景。在线Demo展示了实际效果,便于开发者参考与使用。
|
7月前
|
数据采集 Web App开发 API
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
本文介绍了如何使用FastAPI和Selenium搭建RESTful接口,访问免版权图片网站Pixabay并采集图片及其描述信息。通过配置代理IP、User-Agent和Cookie,提高爬虫的稳定性和防封禁能力。环境依赖包括FastAPI、Uvicorn和Selenium等库。代码示例展示了完整的实现过程,涵盖代理设置、浏览器模拟及数据提取,并提供了详细的中文注释。适用于需要高效、稳定的Web数据抓取服务的开发者。
360 15
FastAPI与Selenium:打造高效的Web数据抓取服务 —— 采集Pixabay中的图片及相关信息
|
7月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
396 7
|
10月前
|
缓存 安全 网络安全
HTTP/2与HTTPS在Web加速中的应用
HTTP/2与HTTPS在Web加速中的应用
373 11
|
10月前
|
Go UED
Go Web服务中如何优雅平滑重启?
在生产环境中,服务升级时如何确保不中断当前请求并应用新代码是一个挑战。本文介绍了如何使用 Go 语言的 `endless` 包实现服务的优雅重启,确保在不停止服务的情况下完成无缝升级。通过示例代码和测试步骤,详细展示了 `endless` 包的工作原理和实际应用。
214 3
|
10月前
|
JSON Go UED
Go Web服务中如何优雅关机?
在构建 Web 服务时,优雅关机是一个关键的技术点,它确保服务关闭时所有正在处理的请求都能顺利完成。本文通过一个简单的 Go 语言示例,展示了如何使用 Gin 框架实现优雅关机。通过捕获系统信号和使用 `http.Server` 的 `Shutdown` 方法,我们可以在服务关闭前等待所有请求处理完毕,从而提升用户体验,避免数据丢失或不一致。
155 1
|
4月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。