Skip to the content.

CentOS 9 实战(11):Web 服务器配置:Apache 与 Nginx

欢迎来到《CentOS 9 实战速查手册》专栏的第 11 篇文章。在这里,我们将探讨 CentOS 9 中的 Web 服务器配置,重点介绍 ApacheNginx 的安装与配置。这两种 Web 服务器在现代 Web 开发中占据重要地位,通过学习它们的配置,你将能够为你的应用程序提供高效、可靠的 Web 服务。

1. Apache 与 Nginx 对比

在选择 Web 服务器时,了解 ApacheNginx 的特点、优势和劣势是非常重要的。

1.1 Apache

1.2 Nginx

1.3 开发中的主流建议

在选择 Web 服务器时,开发者需要根据具体需求来选择合适的服务器:

1.4 企业开发的最佳实践

2. 安装与配置 Apache

2.1 安装 Apache

CentOS 9 中,可以使用 dnf 命令来安装 Apachehttpd):

# 安装 Apache
sudo dnf install -y httpd

2.2 启动和启用 Apache 服务

安装完成后,需要启动 Apache 服务并设置为开机自启:

# 启动 Apache 服务
sudo systemctl start httpd

# 启用 Apache 服务,系统启动时自动启动
sudo systemctl enable httpd

2.3 检查 Apache 服务状态

使用以下命令检查 Apache 服务的运行状态:

# 检查 Apache 服务状态
sudo systemctl status httpd

2.4 配置防火墙

确保防火墙允许 HTTPHTTPS 流量:

# 允许 HTTP 流量
sudo firewall-cmd --permanent --add-service=http

# 允许 HTTPS 流量
sudo firewall-cmd --permanent --add-service=https

# 重新加载防火墙规则
sudo firewall-cmd --reload

2.5 配置虚拟主机

通过配置虚拟主机,可以在一台服务器上托管多个网站。虚拟主机配置文件位于 /etc/httpd/conf.d 目录下。以下是一个简单的虚拟主机配置示例:

# 创建虚拟主机配置文件
sudo vim /etc/httpd/conf.d/your_site.conf

# 添加以下内容
<VirtualHost *:80>
    ServerName your_site.com
    DocumentRoot /var/www/your_site

    <Directory /var/www/your_site>
        Options Indexes FollowSymLinks Includes
        AllowOverride All
        Require all granted

        # 支持 .shtml 文件作为索引文件
        DirectoryIndex index.html index.htm index.shtml
    </Directory>

    ErrorLog /var/log/httpd/your_site_error.log
    CustomLog /var/log/httpd/your_site_access.log combined
</VirtualHost>

2.6 创建网站目录和权限

创建网站目录并设置适当的权限:

# 创建网站目录
sudo mkdir -p /var/www/your_site

# 设置目录权限
sudo chown -R apache:apache /var/www/your_site

2.7 重启 Apache 服务

配置完成后,重启 Apache 服务以使更改生效:

# 重启 Apache 服务
sudo systemctl restart httpd

2.8 测试 Apache 和 SSI 配置

  1. 创建一个 index.shtml 文件

     echo '<html><body><h1>Welcome to your_site.com!</h1><!--#echo var="DATE_LOCAL" --></body></html>' | sudo tee /var/www/your_site/index.shtml
    
  2. 在浏览器中访问你的虚拟主机域名

     http://your_site.com
    

    你应该能够看到 index.shtml 页面,并且服务器端包含的指令(如 <!--#echo var="DATE_LOCAL" -->)应该被正确解析和显示。

3. 安装与配置 Nginx

3.1 安装 Nginx

CentOS 9 中,可以使用 dnf 命令来安装 Nginx

# 安装 Nginx
sudo dnf install -y nginx

3.2 启动和启用 Nginx 服务

安装完成后,需要启动 Nginx 服务并设置为开机自启:

# 启动 Nginx 服务
sudo systemctl start nginx

# 启用 Nginx 服务,系统启动时自动启动
sudo systemctl enable nginx

3.3 检查 Nginx 服务状态

使用以下命令检查 Nginx 服务的运行状态:

# 检查 Nginx 服务状态
sudo systemctl status nginx

3.4 配置防火墙

确保防火墙允许 HTTPHTTPS 流量:

# 允许 HTTP 流量
sudo firewall-cmd --permanent --add-service=http

# 允许 HTTPS 流量
sudo firewall-cmd --permanent --add-service=https

# 重新加载防火墙规则
sudo firewall-cmd --reload

3.5 配置服务器块

通过配置服务器块,可以在一台服务器上托管多个网站。服务器块配置文件位于 /etc/nginx/conf.d 目录下。以下是一个简单的服务器块配置示例:

# 创建服务器块配置文件
sudo vim /etc/nginx/conf.d/your_site.conf

# 添加以下内容
server {
    listen 80;
    server_name your_site.com;
    root /var/www/your_site;

    index index.html index.htm index.shtml;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/your_site_error.log;
    access_log /var/log/nginx/your_site_access.log;
}


3.6 创建网站目录和权限

创建网站目录并设置适当的权限:

# 创建网站目录
sudo mkdir -p /var/www/your_site

# 设置目录权限
sudo chown -R nginx:nginx /var/www/your_site

3.7 启用 SSI 模块

在 Nginx 配置文件中启用 SSI 模块:

# 编辑 Nginx 配置文件
sudo vim /etc/nginx/nginx.conf

# 在 http 块或 server 块中添加 ssi on 指令
http {
    ...
    ssi on;
    ...
}

3.8 重启 Nginx 服务

配置完成后,重启 Nginx 服务以使更改生效:

# 重启 Nginx 服务
sudo systemctl restart nginx

3.9 测试 Nginx 和 SSI 配置

  1. 创建一个 index.shtml 文件

     echo '<html><body><h1>Welcome to your_site.com!</h1><!--#echo var="DATE_LOCAL" --></body></html>' | sudo tee /var/www/your_site/index.shtml
    
  2. 在浏览器中访问你的虚拟主机域名

     http://your_site.com
    

    你应该能够看到 index.shtml 页面,并且服务器端包含的指令(如 <!--#echo var="DATE_LOCAL" -->)应该被正确解析和显示。

4. 配置 HTTPS

为了确保数据在传输过程中安全,加密 Web 流量是非常重要的。可以使用 Let’s Encrypt 提供的免费 SSL 证书 来配置 HTTPS

4.1 安装 Certbot

Certbot 是一个用于自动化 SSL 证书生成和管理的工具。可以使用以下命令安装 Certbot

# 安装 Certbot
sudo dnf install -y certbot python3-certbot-apache python3-certbot-nginx

4.2 使用 Certbot 配置 Apache HTTPS

使用 Certbot 自动配置 ApacheHTTPS

# 使用 Certbot 配置 Apache HTTPS
sudo certbot --apache

按照提示操作,Certbot 将自动生成 SSL 证书并配置 Apache 使用 HTTPS。

4.3 使用 Certbot 配置 Nginx HTTPS

使用 Certbot 自动配置 NginxHTTPS

# 使用 Certbot 配置 Nginx HTTPS
sudo certbot --nginx

按照提示操作,Certbot 将自动生成 SSL 证书并配置 Nginx 使用 HTTPS。

4.4 自动续约 SSL 证书

Let’s Encrypt 的 SSL 证书有效期为 90 天,建议配置自动续约:

# 配置自动续约
sudo certbot renew --dry-run

确保 Certbot 的自动续约功能正常工作。

5. 同时安装 Apache 和 Nginx 的端口冲突问题

当在同一台服务器上同时安装 ApacheNginx 时,可能会出现端口冲突问题。默认情况下,两者都监听 80443 端口。

5.1 修改 Apache 端口

可以修改 Apache 的端口配置,避免与 Nginx 冲突:

# 编辑 Apache 主配置文件
sudo vim /etc/httpd/conf/httpd.conf

# 修改监听端口
Listen 8080

然后重启 Apache 服务:

# 重启 Apache 服务
sudo systemctl restart httpd

5.2 修改 Nginx 端口

也可以修改 Nginx 的端口配置,避免与 Apache 冲突:

# 编辑 Nginx 配置文件
sudo vim /etc/nginx/nginx.conf

# 修改监听端口
server {
    listen 8080;
    ...
}

然后重启 Nginx 服务:

# 重启 Nginx 服务
sudo systemctl restart nginx

6. 总结

在这篇文章中,我们介绍了 CentOS 9Web 服务器配置,包括 ApacheNginx 的安装与配置,如何配置 HTTPS,以及如何解决两者同时安装时的端口冲突问题。通过掌握这些知识,你可以为你的应用程序提供高效、可靠、安全的 Web 服务。在接下来的文章中,我们将深入探讨 数据库服务配置:MariaDB 与 MySQL,敬请期待。