如何设置独立的Apache服务器与基于名称的虚拟主机与SSL证书 - 第4部分

在本文中,我们将向您展示如何配置Apache来提供Web内容,以及如何设置基于名称的虚拟主机和SSL,包括自签名

一个联邦经济竞争法 (简称Linux基金会认证工程师 )是一个训练有素的专业谁拥有安装,管理,并在Linux系统解决网络服务的专业知识,并负责设计,执行和系统架构的持续维护。

在本文中,我们将向您展示如何配置Apache以提供Web内容,以及如何设置基于名称的虚拟主机和SSL,包括自签名证书。

使用SSL设置Apache虚拟主机

Linux基础认证工程师 - 第4部分

Linux基础认证计划(LFCE)简介。

:本文是不应该在Apache一个全面的指南,而是有关此主题的联邦经济竞争法考试自学的起点。 因此,在本教程中,我们不会使用Apache覆盖负载平衡。

你可能已经知道其他的方法来执行相同的任务,这是确定考虑到Linux基金会认证是严格基于性能。 因此,只要你把工作做好 “,你站通过考试的好机会。

要求

请参考当前系列的第1部分 (“ 安装网络服务和配置自动启动在启动 ”),对安装并启动Apache指令。

到目前为止,您应该已经安装并运行了Apache Web服务器。 您可以使用以下命令验证此。

# ps -ef | grep -Ei '(apache|httpd)' | grep -v grep

:对于Apachehttpd的运行进程的列表中存在(最常见的名称为Web后台程序)上面的命令检查。 如果Apache正在运行,您将获得类似于以下内容的输出。

检查Apache进程

检查Apache进程

测试Apache安装并检查它是否正在运行的最终方法是启动Web浏览器并指向服务器的IP。 我们应该看到以下屏幕或至少一个确认Apache正在工作的消息。

检查Apache网页

检查Apache网页

配置Apache

Apache的主配置文件可以位于不同的目录中,具体取决于您的分发。

/etc/apache2/apache2.conf 		[For Ubuntu]
/etc/httpd/conf/httpd.conf		[For CentOS]
/etc/apache2/httpd.conf 		[For openSUSE]

幸运的是,配置指令非常好,在记录Apache项目网站 我们将在本文中引用其中的一些。

在带有Apache的独立服务器中提供页面

Apache的最基本用法是在尚未配置虚拟主机的独立服务器上提供网页。 DocumentRoot指令规定出哪些Apache将提供网页文件的目录。

请注意,默认情况下,所有请求都来自此目录,但您也可以使用符号链接和/或别名也可以用于指向其他位置。

除非Alias指令(其允许文件被存储在本地文件系统,而不是通过DocumentRoot的指定的目录下)相匹配,则服务器追加从所请求的URL的文档根的路径,使该路径的文档。

例如,给定以下的DocumentRoot:

Apache DocumentRoot

Apache DocumentRoot

当网络浏览器指向[ 服务器IP主机名 ] /lfce/howtoing.html,服务器将打开/var/www/html/lfce/howtoing.html(假定这样的文件存在)和事件保存到其访问日志用200(OK)响应。

访问日志通常发现的/ var/记录下代表的名称,如access.log里访问日志 你甚至可以找到此日志(以及错误日志以及)一个子目录中(例如, 在/ var /日志/ CentOS中的httpd)。 否则,失败事件仍将被记录到访问日志,但与404(未找到)响应。

Apache访问日志

Apache访问日志

此外,失败的事件将被记录在错误日志中:

Apache错误日志

Apache错误日志

访问日志的格式可根据使用主配置文件中的LogFormat指令,而你不能做的错误日志相同您的需求进行定制。

访问日志的缺省格式如下:

LogFormat "%h %l %u %t \"%r\" %>s %b" [nickname]

其中每个前面带有百分号的字母表示服务器记录某条信息:

描述
%H 远程主机名或IP地址
%l 远程日志名称
%u 如果请求已通过身份验证,则为远程用户
%t 收到请求的日期和时间
%r 第一行请求到服务器
%> s 请求的最终状态
%b 响应大小[字节]

昵称是可用于自定义其他日志,而无需再次输入整个配置字符串可选别名。

你可以参考LogFormat指令[ 自定义日志格式部分在Apache的文档进行进一步的选择。

这两个日志文件( 访问错误 )代表一个巨大的资源一目了然发生了什么Apache服务器上快速分析。 不用说,它们是系统管理员用来解决问题的第一个工具。

最后,另一个重要的指令是 ,告诉服务器接受指定的端口或地址/端口组合上收到的请求:

如果只有一个端口号被定义,则Apache将监听所有网络接口的给定端口(通配符符号*用来表示“所有网络接口”)。

如果指定了IP地址和端口,则apache将监听给定端口和网络接口的组合。

请注意(您将在下面的示例中看到),可以同时使用多个Listen指令来指定要监听的多个地址和端口。 此选项指示服务器响应来自任何列出的地址和端口的请求。

设置基于名称的虚拟主机

虚拟主机的概念定义由同一物理机提供服务的单个站点(或域)。 实际上,多个站点/域可以担任过一个“ 真实服务器作为虚拟主机。 此过程对最终用户是透明的,对于这些用户,不同的站点由不同的Web服务器提供服务。

基于名称的虚拟主机允许服务器依靠客户端报告主机名作为HTTP头的一部分。 因此,使用这种技术,许多不同的主机可以共享相同的IP地址。

每个虚拟主机中的DocumentRoot中的目录进行配置。 对于我们的情况,我们将使用以下虚拟域用于测试设置,每个都位于相应的目录中:

  1. ilovelinux.com - /var/www/html/ilovelinux.com/public_html
  2. linuxrocks.org - /var/www/html/linuxrocks.org/public_html

在正确显示顺序页面,我们将文件模式每个虚拟主机的目录为755:

# chmod -R 755 /var/www/html/ilovelinux.com/public_html
# chmod -R 755 /var/www/html/linuxrocks.org/public_html

接下来,创建每个public_html目录里面的一个样本index.html文件:

<html>
<head>
<title>www.ilovelinux.com</title>
</head>
<body>
<h1>This is the main page of www.ilovelinux.com</h1>
</body>
</html>

最后,在CentOS的openSUSE/etc/httpd/conf/httpd.conf中/etc/apache2/httpd.conf,底部添加下面的部分分别为,或者只是修改它,如果它已经存在。

<VirtualHost *:80>
ServerAdmin admin@ilovelinux.com 
DocumentRoot /var/www/html/ilovelinux.com/public_html
ServerName www.ilovelinux.com
ServerAlias www.ilovelinux.com ilovelinux.com
ErrorLog /var/www/html/ilovelinux.com/error.log
LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
CustomLog /var/www/html/ilovelinux.com/access.log	myvhost
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@linuxrocks.org 
DocumentRoot /var/www/html/linuxrocks.org/public_html
ServerName www.linuxrocks.org
ServerAlias www.linuxrocks.org linuxrocks.org
ErrorLog /var/www/html/linuxrocks.org/error.log
LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
CustomLog /var/www/html/linuxrocks.org/access.log	myvhost
</VirtualHost>

请注意,您还可以在单独的文件添加/etc/httpd/conf.d目录中每个虚拟主机的定义。 如果选择这样做,则每个配置文件必须命名如下:

/etc/httpd/conf.d/ilovelinux.com.conf
/etc/httpd/conf.d/linuxrocks.org.conf

换句话说,你需要的.conf添加到网站或域名。

Ubuntu中,每个配置文件名为在/ etc / apache2的/网站的可用/ [站点名称]的.conf。 然后每个网站启用或与a2ensitea2dissite命令,分别禁止,如下。

# a2ensite /etc/apache2/sites-available/ilovelinux.com.conf
# a2dissite /etc/apache2/sites-available/ilovelinux.com.conf
# a2ensite /etc/apache2/sites-available/linuxrocks.org.conf
# a2dissite /etc/apache2/sites-available/linuxrocks.org.conf

a2ensitea2dissite命令创建链接到虚拟主机配置文件和地点(或删除)在/ etc /启用站点-的Apache2 /目录他们。

为了能够浏览到另一个Linux中这两个网站,你将需要添加以下行的/ etc / hosts中在机文件,以请求这些域重定向到一个特定的IP地址。

[IP address of your web server]	www.ilovelinux.com
[IP address of your web server]	www.linuxrocks.org 

作为一种安全措施,SELinux的不会让Apache将日志写入到默认的/ var /日志/ httpd的其他目录。

您可以禁用SELinux,或设置正确的安全上下文:

# chcon system_u:object_r:httpd_log_t:s0 /var/www/html/xxxxxx/error.log

其中xxxxxx/ var / www / html等 ,您已经定义了虚拟主机里面的目录。

重新启动Apache后,您应该在上面的地址看到以下页面:

检查Apache VirtualHosts

检查Apache VirtualHosts

使用Apache安装和配置SSL

最后,我们将创建和安装自签名证书与Apache使用。 这种设置在小型环境(如专用LAN)中是可以接受的。

但是,如果您的服务器将通过Internet将内容公开到外部,您将需要安装由第三方签名的证书以证实其真实性。 无论哪种方式,证书都将允许您加密传输到您的网站,从您的网站或您的网站传输的信息。

CentOS的openSUSE,您需要安装mod_ssl的包。

# yum update && yum install mod_ssl 		[On CentOS]
# zypper refresh && zypper install mod_ssl	[On openSUSE]

而在Ubuntu你必须启用的Apache SSL模块。

# a2enmod ssl

下面的步骤是使用讲解了CentOS的测试服务器,但您的设置应该在其他的发行几乎是相同的(如果您遇到任何问题,请不要犹豫,用留下的评论形式您的问题)。

第1步 [可选]:创建一个目录来存储证书。

# mkdir /etc/httpd/ssl-certs

第2步 :生成您的自签名证书,这将保护它的关键。

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl-certs/apache.key -out /etc/httpd/ssl-certs/apache.crt

上面列出的选项的简要说明:

  1. REQ -x509表明我们正在创造一个X509证书。
  2. -nodes(NO DES)的意思是“不加密密钥”。
  3. -days 365是证书的有效期为天数。
  4. -newkey RSA:2048创建一个2048位RSA密钥。
  5. -keyout /etc/httpd/ssl-certs/apache.key是RSA密钥的绝对路径。
  6. -out /etc/httpd/ssl-certs/apache.crt是证书的绝对路径。
创建Apache SSL证书

创建Apache SSL证书

第3步 :打开你所选择的虚拟主机配置文件(或/etc/httpd/conf/httpd.conf中的相应部分如前所述),并添加以下行到虚拟主机声明监听端口443。

SSLEngine on
SSLCertificateFile /etc/httpd/ssl-certs/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl-certs/apache.key

请注意,您需要添加。

NameVirtualHost *:443

在顶部,正下方

NameVirtualHost *:80

这两个指令指示Apache监听端口443和所有网络接口80。

下面的例子是从/etc/httpd/conf/httpd.conf中采取:

Apache VirtualHost指令

Apache VirtualHost指令

然后重新启动Apache,

# service apache2 restart 			[sysvinit and upstart based systems]
# systemctl restart httpd.service 		[systemd-based systems]

而浏览器指向https://www.ilovelinux.com。 您将看到以下屏幕。

检查Apache SSI证书

检查Apache SSI证书

来吧,点击“ 我了解风险 ”和“ 添加例外 ”。

Apache Ceritficate警告

Apache Ceritficate警告

最后,勾选“ 永久保存此例外 ”,并点击“ 确认安全例外 ”。

添加SSl Ceritficate

添加SSl Ceritficate

你会使用https被重定向到您的主页。

Apache HTTPS已启用

Apache HTTPS已启用

概要

在这篇文章中,我们已经展示了如何使用SSL配置Apache基于域名的虚拟主机,以确保数据传输。 如果由于某种原因遇到任何问题,请随时使用下面的评论表格让我们知道。 我们将非常乐意帮助您执行成功的设置。

阅读

  1. 基于Apache IP和基于名称的虚拟主机
  2. 使用启用/禁用Vhosts创建Apache虚拟主机选项
  3. 使用“Apache GUI”工具监视“Apache Web服务器”