什么是指令?指令的作用是什么?

Apache 指令是一组规则,它们定义了您的服务器应该如何运行、可以访问您的服务器的客户端数量等。您可以使用 apache2.conf 或 httpd.conf 文件来配置它们。

放置在主配置文件中的指令适用于整个服务器。如果您希望仅更改服务器的一部分的配置,您可以通过将指令放置在<Directory><DirectoryMatch><Files><FilesMatch><Location><LocationMatch>部分中来确定指令的范围。这些部分限制了它们包含在特定文件系统位置或 URL 中的指令的应用。它们也可以嵌套,允许非常细粒度的配置。

配置最重要的指令

来自官方网站的所有可用指令列表 apache2.4 -https://httpd.apache.org/docs/2.4/mod/directives.html

  • 重要指令

  • 服务器名

  • 保活

  • 服务器根

  • 日志记录

  • 文档根目录

  • 允许自

  • 文件包含

  • 恩瓦

指令的详细信息和用法

了解并清楚基础知识,不仅可以节省大量时间,还可以提高生产力和更快地编程。在这种情况下,了解 Apache Web 服务器的基础知识及其概念非常重要,因为在托管大型项目或 Web 应用程序后,如果 Web 服务器需要扩展或需要添加一些自定义功能,那么实现所有这些将非常容易配置和易于调试。以下是默认和基本指令的详细信息和用法。

服务器名称

ServerName 指令用于定义或设置您的域名或子域的名称。

ServerName 指令是可选的,它指定您的站点应响应的 FQDN。默认虚拟主机没有指定 ServerName 指令,因此它将响应与另一个虚拟主机中的 ServerName 指令不匹配的所有请求。

如果您有一个域名 mysite.com 并且您想使用 apache Web 服务器托管它,那么 VirthuaHost 配置文件中的 ServerName 指令的值应该是您的域名。

<VirtualHost *:80>
    ServerName www.mysite.com
    DocumentRoot "/home/web-app"
    # Other directives here
</VirtualHost>

进入全屏模式 退出全屏模式

聆听

Listen 是用于定义 Apache 侦听的端口以及要侦听的任何特定 IP 地址的指令。如果没有指定 IP 地址,Apache2 将监听分配给它运行的机器的所有 IP 地址。

默认情况下,Apache 侦听端口 80,但如果需要,您可以将其定义为非标准端口。您还可以使用 Listen 定义服务器将接受来自其的连接的特定地址。

如何监听一个端口并分配多个 IP 地址以公开网络服务器。

服务器有两个 IP 地址。在一个 (162.0.0.40) 上,我们将为“主”服务器 server.mysite.com 提供服务,在另一个 (162.0.0.50) 上,我们将为两个或更多虚拟主机提供服务。

Listen 80

# This is the "main" server running on 162.0.0.40
ServerName server.mysite.com
DocumentRoot "/www/mainserver"

<VirtualHost 162.0.0.40>
    DocumentRoot "/www/example1"
    ServerName www.mysite.com
</VirtualHost>

<VirtualHost 162.0.0.50>
    DocumentRoot "/www/example2"
    ServerName www.mysite.org
</VirtualHost>

进入全屏模式 退出全屏模式

如何在不同的端口上运行不同的站点。

Listen 80
Listen 8080

<VirtualHost 172.20.30.40:80>
    ServerName www.mysite.com
    DocumentRoot "/www/project-80"
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
    ServerName www.mysite-2.com
    DocumentRoot "/www/project-8080"
</VirtualHost>

<VirtualHost 172.20.30.40:80>
    ServerName www.mysite-3.org
    DocumentRoot "/www/project-2-80"
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
    ServerName www.mysite-4.org
    DocumentRoot "/www/project-2-8080"
</VirtualHost>

进入全屏模式 退出全屏模式

加载模块

LoadModule 是用于通知 Apache 服务器要加载的模块的指令。大量的模块包含在默认的 Apache 安装中——并且可以找到更多。但并非所有模块都默认加载(您也不希望它们如此)。例如,如果您查看 Apache 配置目录/etc/apache2,您会发现一个包含所有可用模块的子文件夹。

在下一课中,我们已经解释了如何列出所有模块、如何安装第三方模块、如何启用以及如何使用它们。

一旦确定要加载模块,请使用 LoadModule 指令。

列出可用模块:

ls /etc/apache2/mods-available/

进入全屏模式 退出全屏模式

列出已安装的模块:

$ apachectl -M

进入全屏模式 退出全屏模式

启用缓存模块:

$ sudo a2enmod cache
$ sudo a2enmod cache_disk
$ sudo a2enmod expires
$ sudo a2enmod headers

进入全屏模式 退出全屏模式

保持活力

这是一个重要的指令。它定义服务器是否允许每个连接多个请求。

Keep Alive 用于防止客户端消耗过多的网络服务器资源。

默认情况下,KeepAlive 设置为关闭,以防止服务器变得太忙。如果您启用它,请使用相关的 KeepAliveTimeout 指令并将其设置为较低的数字。

打开终端并运行以下命令以打开 Apache 服务器配置文件。

$ sudo vi /etc/apache2/apache2.conf

进入全屏模式 退出全屏模式

在 Apache 中启用 Keep-Alive

# KeepAlive: Enable/disable persistent connections
KeepAlive On


# MaxKeepAliveRequests: How many requests to allow during a persistent connection. 
# You can set it 0 for unlimited requests, but it is not recommended.
MaxKeepAliveRequests 100


# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection. Default is 5 seconds
KeepAliveTimeout 15

进入全屏模式 退出全屏模式

服务器根

ServerRoot 指令设置定义和设置所有网络服务器全局配置的目录。

通常它将包含子目录 conf/ 和 logs/。其他配置指令(例如 Include 或 LoadModule)中的相对路径被视为相对于该目录。

在 Debian 和 Ubuntu 中,它是 /etc/apache2,这是所有虚拟主机、模块、端口、envvars 的所有配置所在的位置。

打开终端并运行以下命令以打开 Apache 服务器配置文件。

$ sudo vi /etc/apache2/apache2.conf

进入全屏模式 退出全屏模式

ServerRoot "/home/httpd"

进入全屏模式 退出全屏模式

  • 日志记录 Apache HTTP 服务器提供了各种不同的机制来记录服务器上发生的所有事情,从初始请求到 URL 映射过程,再到连接的最终解决方案,包括过程中可能发生的任何错误.网络服务器跟踪和监控每一个进出的日志。默认情况下,有两个日志文件

  • access.log 和 2.error.log

**访问日志:**此文件存储并跟踪有关传入请求和传出响应的信息日志。有关查询的一些基本信息,如延迟、协议、客户端操作系统、时间日期、HTTP 状态、IP 地址客户端,我们将在本课中详细介绍。

错误日志: 此文件包含有关在处理活动运行的 Web 应用程序的请求和响应时遇到的任何错误的诊断信息。

ErrorLog、CustomLog:指定日志文件的位置。

配置日志目录:

<VirtualHost *:80>
   ErrorLog /your-directory/error.log
   CustomLog /your-directory/access.log combined
</VirtualHost>

进入全屏模式 退出全屏模式

显示日志

sudo tail -f /var/log/apache2/access.log

进入全屏模式 退出全屏模式

文档根目录

DocumentRoot 指令指定 Apache2 应该在哪里查找客户端请求的文件以及应该由 Web 服务器呈现和处理的文件。这是 Apache 将从中读取访问者将通过浏览器访问的内容的目录。或者换句话说,这是形成可通过 Web 访问的目录树的目录。

“DocumentRoot”选项指定为此虚拟主机请求的内容将位于何处。

默认值为 /var/www/html,在 /etc/apache2/sites-available/000-default.conf 中指定。

<VirtualHost *:80>
        ServerName www.your-domain.com
        ServerAdmin name@your-domain.com
        DocumentRoot /home/web/index.html
        LogLevel warn

        ErrorLog /home/logs/error.log
        CustomLog /home/logs/access.log combined
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

进入全屏模式 退出全屏模式

允许来自

Apache 网络服务器具有此功能来设置允许和拒绝访问特定 IP 地址、主机名或地址和主机名组的配置。命令是allow fromdeny from

允许或拒绝访问

命令允许、拒绝是 Apache 网络服务器配置中的一项设置,用于限制对某些目录(文件夹)甚至全局的访问。配置谁可以访问您的目录对于您的网站安全非常重要。命令允许,拒绝是限制谁可以看到什么的一种方法

Allow 指令影响哪些主机“可以访问”服务器的某个区域。访问通常由主机名、IP 地址或 IP 地址范围控制。

此拒绝指令“限制访问”服务器。限制可以再次基于主机名、IP 地址或环境变量。

Order 允许、拒绝指令中使用的 Order 指令。

用法:

<Directory "/www">
Order Allow, 
Deny
Deny from all
Allow from all
</Directory>

进入全屏模式 退出全屏模式

文件包含

服务器端包含 (SSI) 概念允许您配置网页或虚拟主机配置以使用外部文件或文档包含在实时文件和配置中。它们主要用于在网页上提供动态内容并重用 HTML 代码。当您需要更改导航栏时,您只需更改包含文件,而不是服务器上的每个网页。

<VirtualHost *:80>
        ServerName www.your-domain.com
        ServerAdmin name@your-domain.com
        DocumentRoot /home/web/index.html
        LogLevel warn

        ErrorLog /home/logs/error.log
        CustomLog /home/logs/access.log combined
        Include virtual="/header.html"

</VirtualHost>

进入全屏模式 退出全屏模式

永恒之诗

ENVAVRS 是配置文件,位于/etc/apache2/目录下,可以全局设置,也可以本地设置。它是网络服务器的环境变量文件。

Apache2 环境变量在/etc/apache2/envvars文件中设置。这些变量在内部 Apache 结构中存储和操作。

/etc/apache2/envvars 文件包含变量定义,例如 APACHE_LOG_DIR(Apache 日志文件的位置)、APACHE_PID_FILE(Apache 进程 ID)、APACHE_RUN_USERS(运行 Apache 的用户) , 默认情况下 www-data) 等。

vi /etc/apache2/envvars 
OR 
nano /etc/apache2/envvars

进入全屏模式 退出全屏模式

添加将在虚拟主机文件中使用的您自己的变量

export MY_API_INSTANCE=127.0.0.1:5000

进入全屏模式 退出全屏模式

打开您的域的虚拟主机配置文件

<VirtualHost *:80>
        ServerName www.your-domain.com
        ServerAdmin name@your-domain.com
        DocumentRoot /home/web/index.html
        LogLevel warn

        ErrorLog /home/logs/error.log
        CustomLog /home/logs/access.log combined
        SetEnv FOO_API_INSTANCE ${MY_API_INSTANCE} # our env var
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

进入全屏模式 退出全屏模式

在 Apache Web 服务器中,基本构建块是开发人员可以在其上放置项目配置设置的指令。获得指令、模块、配置、参数的清晰和清晰的概念将始终节省大量调试服务器的时间,根据开发人员对其进行扩展和优化。

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐