httpd(Web服务器)

名词解释

1、URL:Uniform Resource Locator,统⼀资源定位符

2、⽹址格式:<协议>://<主机或主机名>[:port]/<⽬录资源,路径>

3、主机地址/主机名:主机地址是服务器在因特⽹所在的IP地址。主机名就需要域名解析来处理

4、主机文件:Linux中一般位于/etc/host,Windows位于C:\Windows\system32\drivers\etc\hosts

5、端⼝号(port):http为80,https为443

0-1023:永久地分配给固定的应⽤程序使⽤,特权端⼝(只有管理员有权限启⽤并让进程监听)
1024-41951:注册端⼝,但不是特别严格,分配给程序注册为某应⽤使用(3306/TCP)
41952-60000:客⼾端程序随机使⽤的端⼝,动态端⼝,或私有端⼝

httpd相关文件

安装httpd:

yum install httpd -y

Apache HTTP服务器是通过简单的⽂本⽂件配置的。这些⽂件可能位于不同的位置,具体取决于服务器的安装⽅式。

这些⽂件的公共位置如下所示

服务根目录(ServerRoot)/etc/httpd
主配置文件( Primary Config File
/etc/httpd/conf/httpd.conf
其他配置文件( Other Config Files
/etc/httpd/conf.d/
⽤于载⼊ Red Hat Enterprise Linux 中打包动 态模块的配置⽂件的辅助⽬录。在默认配置 中,⾸先会处理这些配置⽂件。
/etc/httpd/conf.modules.d/
模块位置( Module Locations
/usr/lib/httpd/modules
网站根目录( DocumentRoot
/var/www/html/
错误日志( ErrorLog
/var/log/httpd/error_log
访问日志( AccessLog
/var/log/httpd/access_log
cgi-bin
/var/ w /cgi- bin (empty and disabled by default)
二进制( binary
/usr/sbin/httpd
运行时目录( runtime directory
/etc/httpd/run
1、 主要的配置文件 /etc/httpd/conf/httpd.conf
2、 额外的参数文件 /etc/httpd/conf.d * .conf
如果你不想要修改原始配置文件 httpd.conf 的话,那么你可以将你自己的额外参数文件独立出来,例如你想要有自己的额外设置值,可以将它写入 /etc/httpd/conf.d/zhuji.conf(注意,扩展名一定是.conf ),而启动 Apache 时,这个文件就会被读入主要配置文件当中了
3、 默认的首页所在目录 /var/ w /html/ ,当输入网址时所显示的数据,就是放在这个目录当中的首页文件(默认为index.html
4、 默认给一些可执行的CGI (网页程序)程序放置的目录 /var/ w /cgi- bin/ ,当输入网址/cgi- bin/ 时所显示的数据所在。
5、 默认的Apache 日志文件都放在 /var/log/httpd/ ,对于流量比较大的网站来说,一个星期的日志文件的数据可以达到1GB 左右
如果从源代码处安装了httpd,那么配置⽂件的默认位置是/usr/local/apache2/conf

http模块解释

httpd是一个模块化服务器,即核心服务器中只包含最基本的功能,但是可以通过可加载到httpd中的模块来提供扩展功能。默认情况下,编译时服务器中包含一组基本模块,如果将服务器编译为使用动态加载的模块,则可以单独编译模块,并随时使用LoadModule指令添加模块,否则必须重新编译httpd以添加或删除模块。通过将指令封装在块中,可以在特定模块存在的条件下包含配置指令,但是块不是必须的,在某些情况下可能会掩盖缺少重要模块的事实

httpd -l:查看当前编译到服务器中的模块
httpd -M:查看动态加载的模块

httpd主配置文件解释

cat /etc/httpd/conf/httpd.conf

该文件内容如下:

目录树的顶部
ServerRoot "/etc/httpd"

侦听特定的IP地址或端口(必需指令,配置文件没有会导致服务器无法启动)
Listen 80

允许在服务器配置文件中包含其他配置文件(通配符表达式与任何文件不匹配则Include指令将失败并出错;如果忽略不匹配的通配符,则可以使用IncludeOptional指令)
Include conf.modules.d/*.conf

运行httpd的用户/组的名称
User apache
Group apache

电子邮件地址
ServerAdmin root@localhost

服务器用于标识自身的名称和端口
ServerName 0.0.0.0:80

这里拒绝所有/的访问
<Directory />
    AllowOverride none
    Require all denied
</Directory>

提供文档的目录
DocumentRoot "/var/www/html"

允许对该目录的访问
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

放宽对默认文档根目录的访问
<Directory "/var/www/html">
    启用了基于文件目录和符号链接的访问
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

如果指定模块存在,则按照指定的指令执行
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

应用于匹配文件名的指令,拒绝了.ht前缀的所有文件
<Files ".ht*">
    Require all denied
</Files>

错误日志路径
ErrorLog "logs/error_log"

日志级别
LogLevel warn

访问日志格式化配置模块
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>

# alias:将web路径映射到文件系统路径,并用于访问不在DocumentRoot下的内容。
# ScriptAlias:控制哪些目录包含服务器脚本。脚本别名基本上与别名相同,只是目标目录中的文档被视为应用程序,并在请求时由服务器运行,而不是作为发送到客户端的文档。关于尾随“/”的规则适用于ScriptAlias指令和Alias指令。
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>

对cgi目录的定义
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

对mime(多用途互联网邮件扩展)的配置
<IfModule mime_module>
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

字符集配置
AddDefaultCharset UTF-8

对mime的配置
<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>

启用发送文件
EnableSendfile on

包含其他配置文件
IncludeOptional conf.d/*.conf

httpd使用

基本及相关命令

1、启动httpd服务

systemctl start httpd

2、停止httpd服务

 systemctl stop httpd

3、重启httpd服务

systemctl restart httpd

4、查看httpd绑定IP和端口

5、查看httpd进程

6、防火墙放行端口

7、重启防火墙规则

8、修改SELinux模式

9、网卡修改

设置网卡IPV4地址
nmcli connection modify ens160 ipv4.addresses 192.168.182.128/24

增加网卡IPV4地址
nmcli connection modify ens160 +ipv4.addresses 192.168.182.129/24

删除网卡IPV4地址
nmcli connection modify ens160 -ipv4.addresses 192.168.182.129/24

设置IP地址获取方式为手动
nmcli connection modify ens160 ipv4.method manual 

设置网卡的网关IP地址
nmcli connection modify ens160 ipv4.gateway 192.168.182.2

设置网卡的DNS地址
nmcli connection modify ens160 ipv4.dns 114.114.114.114

设置自动启动网卡
nmcli connection modify ens160 connection.autoconnect yes

启动网卡
nmcli connection up ens160 

显示会话
nmcli connection show

显示设备
nmcli device

1、基于IP、端口、域名的虚拟主机

1.1基于IP

1、进入副配置文件目录下并创建一个后缀为.conf的配置文件

cd /etc/httpd/conf.d
vim vhost.conf

2、编写文件内容

3、创建对应目录及index.html

mkdir /testip1 /testip2
echo welcome 192.168.182.128 > /testip1/index.html
echo welcome 192.168.182.129 > /testip2/index.html

4、网卡添加新地址

nmcli connection modify ens160 ipv4.addresses 192.168.1182.128/24
nmcli connection modify ens160 ipv4.addresses 192.168.182.128/24
nmcli connection modify ens160 ipv4.method manual
nmcli connection modify ens160 +ipv4.addresses 192.168.182.129/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、防火墙放行端口及重启

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

6、修改SELinux

setenforce 0

7、启动httpd

systemctl start httpd

结果:

1.2基于端口

1、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/virport.conf

2、编写文件内容

3、创建对应目录及index.html

mkdir /testport1 /testport2
echo welcome 192.168.182.130:80 > /testport1/index.html
echo welcome 192.168.182.130:81 > /testport2/index.html

4、网卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.130/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、防火墙放行端口及重启

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

6、修改SELinux

setenforce 0

7、启动httpd

systemctl start httpd

结果:

1.3基于域名

1、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/virname.conf 

2、编写文件内容

3、创建对应目录及index.html

mkdir /testname1 /testname2 /testname3
echo welcome www.haha.com > /testname1/index.html
echo welcome www.xixi.com > /testname2/index.html
echo welcome www.hehe.com > /testname3/index.html

4、网卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.131/24
nmcli connection modify ens160 +ipv4.addresses 192.168.182.132/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、修改本地地址解析文件/etc/hosts

6、防火墙放行端口及重启

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

7、修改SELinux

setenforce 0

8、启动httpd

systemctl start httpd

结果:

2、基于https的虚拟主机

1、安装ssl模块

yum install mod_ssl -y

2、进入/etc/pki/tls/certs目录中生成秘钥和证书

cd /etc/pki/tls/certs
#生成秘钥
openssl genrsa > jiami.key 
#生成证书
openssl req -utf8 -new -key jiami.key -x509 -days 100 -out jiami.crt 

3、将秘钥和证书放置于正确的路径中

由于在/etc/pki/tls/certs/目录下生成秘钥和证书
所以证书文件不用移动
只需移动秘钥文件
mv /etc/pki/tls/private/jiami.key /etc/pki/tls/certs/jiami.crt

4、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/virhttps.conf

5、编写文件

6、网卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.133/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

7、防火墙放行端口及重启

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

8、修改SELinux

setenforce 0

9、启动httpd

systemctl start httpd

结果:

 补充:安装ssl模块后/etc/httpd/conf.d/下出现一个ssl.conf文件

vim /etc/httpd/conf.d/ssl.conf 

其内容如下:

Listen 443 https

SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300

SSLCryptoDevice builtin

<VirtualHost _default_:443>

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn


SSLEngine on


SSLHonorCipherOrder on


SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM


SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0


CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

其中重要的有三句并且需要写入conf文件中:

SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

3、基于用户认证的虚拟主机

1、创建账号文件并建立用户信息

第一次使用htpasswd命令建立目录并添加用户需加-c
htpasswd -c /etc/httpd/zhanghao zhangsan
htpasswd /etc/httpd/zhanghao lisi

2、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/viruser.conf

3、编写文件内容

4、网卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.134/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、创建/testuser目录

mkdir /testuser
echo welcome user > /testuser/index.html

6、创建/mysecret目录

mkdir /mysecret
echo welcome to mysecret > /mysecret/index.html

7、修改主配置文件(将其注释取消并把www.example.com修改为0.0.0.0)

 8、防火墙放行端口及重启

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

9、修改SELinux

setenforce 0

10、启动httpd

systemctl start httpd

结果:

4、基于python的虚拟主机

1、安装模块

yum install python3-mod_wsgi -y

2、在/var/www/cgi-bin目录下编写python文件

vim /var/www/cgi-bin/haha.wsgi

3、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/virpython.conf

4、编写文件

5、修改本地解析文件

6、网卡新增IP地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.135/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

7、防火墙放行端口及重启

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

8、修改SELinux

setenforce 0

9、启动httpd

systemctl start httpd

结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/179561.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用于计算机屏幕安全摄像头系统:Screen Anytime Crack

Screen Anytime 是一款软件&#xff0c;旨在自动将整个用户会话或 PC/服务器/VM/Kiosk 的 /RDP/Citrix/RemoteApp 会话的屏幕活动记录到视频日志文件中&#xff0c;以用于记录、审核和监控目的。通过重播其高度压缩的视频&#xff0c;您可以轻松回顾单台计算机或一组服务器/PC …

Power Apps-下拉列表控件

插入一个下拉列表控件 设置值的两种方式 1.通过属性items写数组设置 2.通过连接数据表&#xff0c;先在右侧操作面板中选择项目中的数据表 再从Value中选择其中一列&#xff0c;下拉就可以选择该列全部行的值 但是这样会导致有很多重复的字段&#xff0c;所以可以在items属性里…

最近技术圈发生了很多大事,来聊聊

如标题所说&#xff0c;最近这几年全球都大事频发。有事甚至不知道是我更关心社会和时政、还是真的进入一个大变革时代。 可以确认的是&#xff0c;现在这个时代、科技的发展到了一个可感知到越来越快的速度。 … 前几天&#xff0c;当下AI 领域最有知名的人奥特曼被 OpenAI…

Leaflet实现轨迹播放动画效果

效果图如下&#xff1a; <!DOCTYPE html> <html><head><title>轨迹</title><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><!-- 引入样式 -->…

Sentinel 授权规则 (AuthorityRule)

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 SpringbootDubboNacos 集成 Sentinel&…

基于深度学习的文本分类

通过构建更复杂的深度学习模型可以提高分类的准确性&#xff0c;即分别基于TextCNN、TextRNN和TextRCNN三种算法实现中文文本分类。 项目地址&#xff1a;zz-zik/NLP-Application-and-Practice: 本项目将《自然语言处理与应用实战》原书中代码进行了实现&#xff0c;并在此基础…

Connect-The-Dots_2

Connect-The-Dots_2 一、主机发现和端口扫描 主机发现&#xff0c;靶机地址192.168.80.148 arp-scan -l端口扫描 nmap -A -p- -sV 192.168.80.148开放端口 21/tcp open ftp vsftpd 2.0.8 or later 80/tcp open http Apache httpd 2.4.38 ((Debian)) 111/tcp …

前缀和——DP34 【模板】前缀和

文章目录 &#x1f34b;1. 题目&#x1f348;2. 算法原理&#x1f348;3. 代码实现 &#x1f34b;1. 题目 题目链接&#xff1a;【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 描述 给定一个长度为n的数组a1,a2,…an. 接下来有q次查询, 每次查询有两个参数l, r. 对于每个询…

基于ZLMediaKit的GB28181视频平台demo

GB28181 主要内容 国标的20位id是按照标准来定的&#xff0c;前8位是地域信息&#xff0c;9-10位是行业信息&#xff0c;11-13是设备类型、14是网络标识、后6位为序号 约定以SIP协议作为会话通道的使用标准&#xff0c;以RTP作为语言和视频的载体。联网系统在进行音视频传输及…

ui设计师简历自我评价的范文(合集)

ui设计师简历自我评价的范文篇一 本人毕业于艺术设计专业&#xff0c;具有较高的艺术素养&#xff0c;平时注重设计理论知识的积累&#xff0c;并将理论应用到作品中。了解当下设计的流行趋势&#xff0c;设计注重细节、重视用户体验&#xff0c;对色彩搭配有着浓厚的兴趣&…

简墨的进化之路:打造大模型数据计算系统的云存储底座

10月24日程序员节&#xff0c;「大模型数据计算系统」2023拓数派年度技术论坛在上海圆满落幕&#xff0c;拓数派大模型数据计算系统&#xff08;PieDataComputingSystem&#xff0c;缩写&#xff1a;πDataCS&#xff09;如约而至&#xff01;πDataCS 以云原生技术重构数据存储…

私有化敏感词检测API服务wordscheck

之前有网友在找敏感词检测的应用&#xff0c;这个应该能满足他的需求&#xff1b; 什么是 wordscheck &#xff1f; wordscheck 是敏感词检测 API&#xff0c;提供文本识别、智能鉴黄、涉政检测、谩骂等等敏感词检测过滤服务。 简介 敏感词库从大量样本库整理出来&#xff0c;…

Java 编码

编码: 加密: 通过加密算法和密钥进行 也可通过码表进行加密 对称加密: 缺点:可被截获 元数据---加密算法密钥密文 ----> 解密算法密钥元数据 算法:DES(短 56位),AES(长 128位)破解时间加长 非对称加密: 元数据-加密算法加密密钥 密文 --->加密算法解密密钥元数据 …

1.Qt5.15及其以上的下载

Qt5.15及其以上的下载 简介&#xff1a; ​ Qt是一个跨平台的C库&#xff0c;允许开发人员创建在不同操作系统&#xff08;如Windows、macOS、Linux/Unix&#xff09;和设备上具有本地外观和感觉的应用程序。Qt提供了一套工具和库&#xff0c;用于构建图形用户界面&#xff0…

CNVD-2023-12632:泛微E-cology9 browserjsp SQL注入漏洞复现 [附POC]

文章目录 泛微E-cology9 browserjsp SQL注入漏洞(CNVD-2023-12632)漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 泛微E-cology9 browserjsp SQL注入漏洞(CNVD-2023-12632)漏洞复现 [附POC] 0x…

JavaEE 多线程01

为什么引入多线程? 首先进程已经能很好的完成多任务这个情景下的并发编程了,那为什么又引入多线程呢? 这是因为在一些情景下,我么需要大量的创建和销毁进程来完成一些任务,此时多进程对系统的开销就会很大了. 假设有这样一个场景,服务器同时接收到很多个服务请求,这个时候服务…

数据挖掘 K近邻

什么时候用K近邻&#xff1f; 交叉验证的时候。最常见的交叉验证方法是K折交叉验证&#xff0c;其中数据集被均匀分成K个子集&#xff0c;称为折&#xff0c;然后执行K次训练和测试&#xff0c;每次选择不同的折作为测试集&#xff0c;其余的作为训练集。最后&#xff0c;将K次…

windows11快速输入时间和日期

windows11快速输入时间和日期 〇、赶时间的看这里 任务栏微软输入法图标右键 | 设置 | 词库和自学习 | 用户自定义短语 |添加或编辑自定义短语| 添加日期设置 %yyyy%-%MM%-%dd%时间设置 %yyyy%-%MM%-%dd% %HH%:%mm%:%ss%-------------------------------------------------…

ROS1创建自定义服务并使用

1.首先在功能包创建一个srv文件夹 如上图所示&#xff0c;vehicle_control是我的功能包&#xff0c;创建一个srv文件夹 2.使用touch指令创建服务文件 touch Ranging.srv3.在文件内输入服务数据 横线代表分割符&#xff0c;上面的是客户端发送的数据&#xff0c;下面是服务器…

【开源】基于Vue.js的民宿预定管理系统

项目编号&#xff1a; S 058 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S058&#xff0c;文末获取源码。} 项目编号&#xff1a;S058&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色…