Web 服务详解:HTTP 与 HTTPS 配置

一、HTTP 服务概述

HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输网页数据的基础协议,默认使用80 端口,以明文形式传输数据。常见的 HTTP 服务软件包括:

  • httpd(Apache):最流行的开源 Web 服务器,功能丰富,配置灵活。
  • Nginx:轻量级高性能 Web 服务器,擅长处理高并发请求。
  • Tomcat:支持 Java Servlet 和 JSP 的应用服务器,常用于部署 Java Web 应用。

本文重点讲解httpd(Apache) 的配置与使用。

二、httpd(Apache)核心配置

1. 关键文件与目录

路径 / 文件

作用描述

/etc/httpd/conf/httpd.conf

httpd 主配置文件,包含全局参数(端口、日志等)。

/var/www/html/

默认网页存放目录,访问服务器 IP 时默认加载此目录下的index.html。

/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf

虚拟主机配置模板文件。

/etc/httpd/conf.d/

虚拟主机配置文件存放目录(httpd 会自动加载此目录下的.conf文件)。

2. 虚拟主机配置

虚拟主机(Virtual Host)允许在一台服务器上通过不同的标识(IP、端口、域名)提供多个网站服务,常见配置方式有三种。

前提条件
  • 已安装 httpd 服务:yum -y install httpd
  • 启动服务并关闭防火墙 / SELinux:
systemctl start httpd 
systemctl enable httpdsystemctl stop firewalld
systemctl disable firewalldsetenforce 0
  • 准备测试网页目录及文件:
# 创建两个测试目录mkdir -p /var/www/one /var/www/html# 写入测试内容echo "abcd" > /var/www/one/index.htmlecho "Welcome to luoqi" > /var/www/html/index.html
方式 1:相同 IP,不同端口

通过不同端口区分不同网站(如 80 端口和 8080 端口)。

  • 复制虚拟主机模板文件:
cp -p /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/
  • 编辑虚拟主机配置文件:
vim /etc/httpd/conf.d/httpd-vhosts.conf
  • 添加以下配置:
# 80端口对应/var/www/one目录<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/one" # 网页目录</VirtualHost># 监听8080端口Listen 8080# 8080端口对应/var/www/html目录<VirtualHost 192.168.100.10:8080>DocumentRoot "/var/www/html"</VirtualHost>
  • 重启服务生效:
systemctl restart httpd
  • 验证:
    • 访问 http://192.168.100.10 → 显示 /var/www/one 内容

    • 访问 http://192.168.100.10:8080 → 显示 /var/www/html 内容

方式 2:不同 IP,相同端口

服务器绑定多个 IP,通过不同 IP 区分网站(均使用 80 端口)。

  • 为服务器添加第二个 IP(以ens33网卡为例):
vim /etc/sysconfig/network-scripts/ifcfg-ens33

添加以下内容:

IPADDR1=192.168.100.50 # 第二个IPPREFIX1=24
  • 重启网络服务:
systemctl restart network
  • 编辑虚拟主机配置文件:
vim /etc/httpd/conf.d/httpd-vhosts.conf
  • 添加以下配置:
# IP 192.168.100.10 对应/var/www/one目录<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/one"</VirtualHost># IP 192.168.100.50 对应/var/www/html目录<VirtualHost 192.168.100.50:80>DocumentRoot "/var/www/html"</VirtualHost>
  • 重启服务并验证:

访问 http://192.168.100.10 → 显示 /var/www/one 内容

访问 http://192.168.100.50 → 显示 /var/www/html 内容

方式 3:相同 IP、端口,不同 FQDN(域名)

通过不同域名(如one.example.com和html.example.com)区分网站,需配合 DNS 服务解析域名到同一 IP。

  • 配置 DNS 正向解析(参考 DNS 服务配置):

在 DNS 服务器的example.com区域文件中添加:

one IN A 192.168.100.10 # one.example.com 解析到服务器IPhtml IN A 192.168.100.10 # html.example.com 解析到服务器IP

重启 DNS 服务:systemctl restart named

  • 编辑虚拟主机配置文件:
vim /etc/httpd/conf.d/httpd-vhosts.conf
  • 添加以下配置:
# 域名 one.example.com 对应/var/www/one目录<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/one"ServerName one.example.com # 绑定域名</VirtualHost># 域名 html.example.com 对应/var/www/html目录<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/html"ServerName html.example.com # 绑定域名</VirtualHost>
  • 重启服务并验证:

访问 http://one.example.com → 显示 /var/www/one 内容

访问 http://html.example.com → 显示 /var/www/html 内容

三、HTTPS 服务概述

HTTPS(HTTP Secure)是 HTTP 的加密版本,通过SSL/TLS 协议对传输数据加密,默认使用443 端口,确保数据传输的安全性(防止窃听、篡改)。

核心特点

  • 加密机制:HTTPS = HTTP + SSL/TLS,通过证书实现身份验证和数据加密。
  • 端口:默认 443 端口(需在防火墙开放)。
  • 证书:需通过 CA(证书颁发机构)签署的证书验证服务器身份,避免 “中间人攻击”。

四、HTTPS 加密原理(SSL/TLS 握手流程)

  1. ClientHello:客户端向服务器发送支持的 SSL/TLS 版本、加密算法列表,及随机数random_c。
  2. ServerHello:服务器确认使用的版本和算法,返回随机数random_s、服务器证书(含公钥)。
  3. ClientKeyExchange:客户端验证证书有效性后,生成预主密钥pre_master,用服务器公钥加密后发送。
  4. 会话密钥生成:服务器用私钥解密pre_master,双方基于random_c + random_s + pre_master生成会话密钥,后续通信使用该密钥加密。

五、HTTPS 配置(基于 httpd 与自建 CA)

1. 环境准备

  • CA 服务器:IP 192.168.100.10,负责生成根证书和签署服务端证书。
  • Web 服务器:IP 192.168.100.20,部署 httpd 并配置 HTTPS。
  • DNS 服务器:已配置域名解析(如ca.example.com指向 CA 服务器,sl1.example.com指向 Web 服务器)。

2. 自建 CA(证书颁发机构)

(1)openssl 配置文件关键参数​

openssl 的主配置文件为/etc/pki/tls/openssl.cnf,其中与 CA 相关的重要参数如下:​

####################################################################​[ CA_default ]​​dir = /etc/pki/CA # 所有CA相关文件的存放根目录​certs = $dir/certs # 证书所在目录​database = $dir/index.txt # 证书数据库文件目录​new_certs_dir = $dir/newcerts # 新生成证书的存放目录​​certificate = $dir/cacert.pem # CA自签名证书(根证书)​serial = $dir/serial # 证书序列号文件​private_key = $dir/private/cakey.pem# CA私钥文件路径​​
步骤 1:配置 CA 目录与文件

CA 相关文件默认存放在/etc/pki/CA/,需创建必要文件(参考/etc/pki/tls/openssl.cnf配置):

# 进入CA目录cd /etc/pki/CA/# 创建私钥(权限需严格限制,仅root可读写)(umask 077; openssl genrsa -out private/cakey.pem)# 生成自签名根证书(CA证书)openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365# 按提示输入信息
(国家:CN,
省份:HB,
城市:WH,
组织:LQ,
主机名:ca.example.com等)# 创建证书数据库和序列号文件touch index.txt # 证书索引数据库echo 01 > serial # 证书序列号(初始为01)
(2)openssl 关键命令选项说明​
  • -x509:生成自签名证书格式,专用于创建私有 CA。​
  • -new:生成新证书的签署请求。​
  • -key:指定生成请求时用到的私钥文件路径。​
  • -out:指定生成后的文件存放路径,如果是自签名操作,将直接生成签署过的证书。​
  • -days:指定证书有效期,默认是 365 天。

3. Web 服务器配置 HTTPS

步骤 1:生成服务端私钥与证书请求
# 在Web服务器上安装httpd和SSL模块yum -y install httpd mod_ssl# 创建存放证书的目录mkdir /etc/httpd/ssl# 生成服务端私钥(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key)# 生成证书请求文件(CSR)openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365# 输入信息需与CA一致,主机名填Web服务器域名(如sl1.example.com)
步骤 2:向 CA 提交证书请求并获取签名证书
# 将CSR文件发送到CA服务器scp /etc/httpd/ssl/httpd.csr root@ca.example.com:/etc/pki/CA/# 在CA服务器上签署证书cd /etc/pki/CA/openssl ca -in httpd.csr -out httpd.crt -days 365# 提示时输入"y"确认签署# 将签署好的证书发送回Web服务器scp httpd.crt root@192.168.100.20:/etc/httpd/ssl/
步骤 3:配置 httpd 支持 HTTPS
  • 编辑 SSL 配置文件:
vim /etc/httpd/conf.d/ssl.conf

修改证书和私钥路径:

SSLCertificateFile /etc/httpd/ssl/httpd.crt # 服务端证书SSLCertificateKeyFile /etc/httpd/ssl/httpd.key # 服务端私钥
  • 配置 HTTPS 虚拟主机(绑定 443 端口):
vim /etc/httpd/conf.d/httpd-vhosts.conf

添加以下内容:

<VirtualHost 192.168.100.20:443>DocumentRoot "/var/www/test" # HTTPS网页目录ServerName sl1.example.com # 绑定域名SSLEngine on # 启用SSLSSLCertificateFile /etc/httpd/ssl/httpd.crtSSLCertificateKeyFile /etc/httpd/ssl/httpd.key</VirtualHost>
  • 创建测试网页:
mkdir /var/www/testecho "HTTPS Test Page" > /var/www/test/index.html
  • 重启 httpd 服务:
systemctl restart httpd

4. 客户端验证 HTTPS

  1. 在客户端导入 CA 根证书(信任自建 CA):
# 从CA服务器下载根证书scp root@192.168.100.10:/etc/pki/CA/cacert.pem /tmp/

(Windows/Linux 客户端需在浏览器中导入该证书,信任 CA)

  1. 访问 HTTPS 网站:

浏览器输入 https://sl1.example.com,确认连接加密(显示锁图标),页面显示 /var/www/test 内容。

六、总结

  • HTTP 服务:通过 httpd 的虚拟主机功能,可基于 IP、端口、域名部署多个网站,核心是配置DocumentRoot和绑定标识。
  • HTTPS 服务:在 HTTP 基础上添加 SSL/TLS 加密,需通过 CA 签署证书实现身份验证,配置重点是证书路径和 SSL 引擎启用。

实际生产环境中,建议使用可信 CA(如 Let's Encrypt)颁发的证书,并合理配置防火墙和 SELinux 规则,保障服务安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92914.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92914.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92914.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO-v2-tiny 20种物体检测模型

一、简介 YOLO-v2-tiny是基于YOLO(You Only Look Once)实时目标检测算法的轻量级版本&#xff0c;专门为嵌入式设备和资源受限环境优化。本模型能够检测20种常见物体类别&#xff0c;在保持较高检测精度的同时大幅减少了计算量和模型大小。 20种物体检测模型&#xff0c; 使用…

heterophilic graph和hetergeneous graph区别(附带homophilic graph 和homoegeneous graph)

Heterophilic Graph&#xff08;异配图&#xff09;连接的节点在属性上不相似,但是所有节点和边的类别都是同一种类型&#xff0c;数据集如squirrel / chameleon&#xff0c;它们是 heterogeneous graph&#xff08;异质图&#xff09;而不是Heterophilic Graph&#xff08;异配…

Thinkphp(GUI)漏洞利用工具,支持各版本TP漏洞检测,命令执行,Getshell

工具介绍 Thinkphp(GUI)漏洞利用工具&#xff0c;支持各版本TP漏洞检测&#xff0c;命令执行&#xff0c;Getshell。JAVAFX可视化编写&#xff0c;博主第一次用javafx来写界面&#xff0c;第一次学习尝试&#xff0c;仅仅只用于学习尝试如果缺少什么payload&#xff0c;欢迎提交…

GitHub分支保护介绍(Branch Protection)(git分支保护)(通过设置规则和权限来限制对特定分支的操作的功能)

文章目录**1. 核心功能****a. 防止误操作****b. 强制代码审查****c. 状态检查&#xff08;Status Checks&#xff09;****d. 权限控制****2. 如何设置分支保护&#xff1f;**1. **进入仓库设置**2. **添加分支保护规则**3. **配置保护规则**4. **保存设置****3. 常见应用场景**…

怎么理解On-Premises

On-Premises 指的是—— 软件、系统、数据中心等部署并运行在企业自己管理的本地硬件或机房里&#xff0c;而不是放在云端或第三方托管环境中。 你可以把它理解成&#xff1a;“服务器在你自己家里&#xff08;公司机房&#xff09;&#xff0c;而不是寄放在别人家&#xff08;…

UserController类讲解

用户管理控制器&#xff0c;实现了用户CRUD操作的RESTful API&#xff1a; 1. 类结构与核心注解 1.1 控制器声明 RestController RequestMapping("/api/users") public class UserControllerRestController 深度解析&#xff1a; 组合注解&#xff1a;Controller Re…

【剑指offer】搜索算法

目录 &#x1f4c1; JZ53 数字在升序数组中出现的次数​编辑 &#x1f4c1; JZ4 二维数组中的查找​编辑 &#x1f4c1; JZ11 旋转数组的最小数字 &#x1f4c1; JZ38 字符串的排列​编辑 &#x1f4c1; JZ53 数字在升序数组中出现的次数 这就是一道简单的模板题&#xff0…

ETLCloud批流一体化体现在哪

ETLCloud批流一体化体现在哪 企业对数据处理的实时性、高效性和准确性的要求越来越高。批流一体化作为一种先进的数据处理理念&#xff0c;逐渐被企业所采用。 目前许多国产化ETL工具也装配了十分强大的批流一体化能力&#xff0c;ETLCoud就是一个很好的代表&#xff0c;它能够…

Mybatis学习之缓存(九)

这里写目录标题一、MyBatis的一级缓存1.1、工作原理1.2、一级缓存失效的四种情况1.3、不同的SqlSession对应不同的一级缓存1.4、同一个SqlSession但是查询条件不同1.5、同一个SqlSession两次查询期间执行了任何一次增删改操作1.6、同一个SqlSession两次查询期间手动清空了&…

windows10装Ubuntu22.04系统(双系统)

参考链接&#xff1a;Windows和Linux双系统的保姆级安装教程&#xff0c;新手小白跟着也能装_windows安装linux双系统-CSDN博客 1 前期准备 1.下载Ubuntu22.04.5 的iso镜像文件&#xff1a;Download Ubuntu Desktop | Ubuntu 2.准备一个U盘&#xff08;空&#xff0c;已有文…

Pandas数据处理与分析实战:Pandas数据清洗与处理入门

数据清洗&#xff1a;Pandas数据处理入门 学习目标 本课程将引导学员了解数据清洗的基本概念&#xff0c;掌握使用Pandas库处理数据集中的缺失值、重复数据和异常值的方法&#xff0c;确保数据的质量&#xff0c;为后续的数据分析和机器学习任务打下坚实的基础。 相关知识点 Pa…

Python爬虫实战:研究ScrapyRT框架,构建图书商城数据采集系统

1. 引言 1.1 研究背景 在当今数字化时代,互联网已成为全球最大的信息库,蕴含着海量的有价值数据,涵盖商业、教育、科研、医疗等各个领域。根据 IDC(国际数据公司)预测,到 2025 年全球数据圈将增长至 175ZB,其中网络数据占比超过 60%。这些数据不仅是企业制定商业策略、…

springboot接口请求参数校验

参数校验 参数校验可以防止无效或错误的数据进入系统。通过校验前端输入的参数&#xff0c;可以确保数据的完整性&#xff0c;避免因为缺少必要的信息而导致程序错误或异常。例如&#xff0c;对于密码字段&#xff0c;可以通过校验规则要求用户输入至少8个字符、包含字母和数字…

Docker部署 Neo4j 及集成 APOC 插件:安装与配置完整指南(docker-compose)

Docker部署 Neo4j 及集成 APOC 插件&#xff1a;分步骤指南 摘要 &#xff1a;本文将分两部分详细介绍相关内容。第一部分讲解如何使用 Docker Compose 部署 Neo4j 图数据库&#xff0c;提供完整配置文件及常见问题解决方案&#xff1b;第二部分在前者基础上&#xff0c;介绍 A…

TLSv1.2协议与TCP/UDP协议传输数据内容差异

一、Wireshark中常见的TLSv1.2在用Wireshark抓包时&#xff0c;除了看到课堂上教过的经典的TCP/UDP协议&#xff0c;还有一个协议经常出现——TLSv1.2。并且这个协议的Info解释是Application data&#xff0c;其实看到这个解释&#xff0c;我大概猜出来了TLSv1.2是用来给用户数…

51c自动驾驶~合集14

自己的原文哦~ https://blog.51cto.com/whaosoft/11707335 #Text2LiDAR 文本引导的无条件点云生成新SOTA 论文题目&#xff1a;《Text2LiDAR: Text-guided LiDAR Point Cloud Generation via Equirectangular Transformer》 论文地址&#xff1a;https://arxiv.o…

k8s基本概念

k8s 的基本概念 Kubernetes是一个可以移植、可扩展的开源平台&#xff0c;使用 声明式的配置 并依据配置信息自动地执行容器化应用程序的管理。在所有的容器编排工具中&#xff08;类似的还有 docker swarm / mesos等&#xff09;&#xff0c;Kubernetes的生态系统更大、增长更…

Easysearch 数据迁移之数据比对

上一篇我们通过 INFINI Gateway 进行了索引数据迁移&#xff0c;对索引迁移结果进行了初步且直观的校验--对比索引的文档数是否一致。今天介绍个实实在在的数据比对方法&#xff0c;通过网关对比索引文档的内容在两个集群是否一致。话不多说&#xff0c;就拿上次迁移的两个索引…

Codeforces Round 1042 (Div. 3)

ABCD 略E注意到每个操作最多执行一次&#xff0c;ifa[i]!b[i]&#xff0c;要么a[i]^a[i1]要么a[i]^b[i1]G设消除1~i的数的操作次数为f[i]&#xff0c;可以推出f[i]2*f[i-1]1&#xff0c;那么消除1~i的数的分数乘的数为g[i]&#xff0c;g[i]g[i-1]*g[i-1]*i s虽然很大&#xff0…

AJAX:让你的网页“静悄悄”变聪明,体验丝滑升级

大家好&#xff0c;今天想聊聊一个让网页“活”起来的小秘密——AJAX。你可能遇到过这种情况&#xff1a;点个按钮&#xff0c;页面就刷新&#xff0c;等得心急火燎。但用了AJAX的网站&#xff0c;比如购物车更新或搜索建议&#xff0c;数据嗖嗖就来了&#xff0c;整个页面却纹…