httpd(Web服务器)

news2024/10/3 0:25:44

名词解释

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

结果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

arduino入门一:点亮第一个led

void setup() { pinMode(12, OUTPUT);//12引脚设置为输出模式 } void loop() { digitalWrite(12, HIGH);//设置12引脚为高电平 delay(1000);//延迟1000毫秒&#xff08;1秒&#xff09; digitalWrite(12, LOW);//设置12引脚为低电平 delay(1000); }

【正则插件】前端正则插件以及预览插件推荐

1&#xff09; 2&#xff09; any-rule Pegex Previewer 下载好插件之后 在代码层右键选择 选择你需要的正则表达式&#xff0c;随后可以使用第二个插件 正则表达式插入之后顶部会有 Test Regex.. 点击会出现以下内容 将他 ctrl a 删除&#xff0c;输入你对应的正则表达…

HarmonyOS ArkTS HTTP数据请求(九)

1 概述 日常生活中我们使用应用程序看新闻、发送消息等&#xff0c;都需要连接到互联网&#xff0c;从服务端获取数据。例如&#xff0c;新闻应用可以从新闻服务器中获取最新的热点新闻&#xff0c;从而给用户打造更加丰富、更加实用的体验。 那么要实现这样一种能实时从服务…

Qt全球峰会2023中国站 参会概要

Qt全球峰会2023中国站 参会概要 前言峰会议程签到 & Demo 演示开场致辞Qt Group 产品总监演讲&#xff08;产品开发的趋势-开放的软件、工具和框架&#xff09;产品战略QtQuick or QtWidgets&#xff08;c or qml&#xff09;Qt如何定义AI个人看法 Qt 在券商数字化转型和信…

fseek 写操作定位无效问题

1、 fseek 代码中明明使用了fseek定位到行首。 fseek(p, 0, SEEK_SET); 但是写的内容&#xff0c;仍然添加到文件尾。 最后发现是fopen时&#xff0c;出现问题。 r 打开只读文件&#xff0c;该文件必须存在。 r 打开可读写的文件&#xff0c;该文件必须存在。 w 打开只写文…

配电房智能综合监控系统

配电房智能综合监控系统是一种针对配电房环境和设备进行实时监控和管理的系统。依托电易云-智慧电力物联网&#xff0c;它集成了多种先进技术&#xff0c;如物联网、大数据、AI视频智能分析等&#xff0c;实现对配电房全方位、智能化的监控和管理。 这个系统的主要功能可能包括…

12英寸双轴半自动划片机:颠覆传统划切工艺的五大优势

随着科技的飞速发展&#xff0c;半导体行业对精密划切设备的需求日益增长。在这篇文章中&#xff0c;我们将深入探讨12英寸双轴半自动划片机的优势&#xff0c;这种划片机在半导体制造过程中扮演着至关重要的角色。以下是这种划片机的五大优势。 一、高精度划切 12英寸双轴半自…

ABAP调用Https接口 Ssl证书导入

ABAP调用Https接口 Ssl证书导入 一、证书导入 谷歌浏览器打开对方系统URL地址&#xff0c;下载SSL Server certificate,步骤如下&#xff1a; 浏览器打开要导出certificate(证书)的网站&#xff0c;点击这个小锁的图标&#xff1a; 点击连接是安全的后面小播放按钮 点击证…

【深度学习】参数优化和训练技巧

寻找合适的学习率(learning rate) 学习率是一个非常非常重要的超参数&#xff0c;这个参数呢&#xff0c;面对不同规模、不同batch-size、不同优化方式、不同数据集&#xff0c;其最合适的值都是不确定的&#xff0c;我们无法光凭经验来准确地确定lr的值&#xff0c;我们唯一可…

22LLMSecEval数据集及其在评估大模型代码安全中的应用:GPT3和Codex根据LLMSecEval的提示生成代码和代码补全,CodeQL进行安全评估

LLMSecEval: A Dataset of Natural Language Prompts for Security Evaluations 写在最前面主要工作 课堂讨论大模型和密码方向&#xff08;没做&#xff0c;只是一个idea&#xff09; 相关研究提示集目标NL提示的建立NL提示的建立流程 数据集数据集分析 存在的问题 写在最前面…

编码的发展历史

编码的发展历史 ASCII&#xff1a; ASCII编码使用7位二进制数表示一个字符&#xff0c;范围从0到127。每个字符都有一个唯一的ASCII码值与之对应。例如&#xff0c;大写字母"A"的ASCII码是65&#xff0c;小写字母"a"的ASCII码是97。 ASCII字符集包括英文…

2023年亚太赛C题目保姆级思路代码 新能源电动汽车的发展趋势

2023年亚太赛已于23号上午6点正式开启&#xff01;本次题目难度主要在于数据都没给&#xff0c;需要进行数据收集和处理&#xff0c;总的难度看起来是C<B<A,本次我也将持续更新每道题目的思路&#xff0c; 大家也可以关注B站实时观看思路进度哦&#xff01; 不知名数学…

大数据湖及应用平台建设解决方案:PPT全39页,附下载

关键词&#xff1a;大数据湖建设&#xff0c;集团大数据湖&#xff0c;大数据湖仓一体&#xff0c;大数据湖建设解决方案 一、大数据湖定义 大数据湖是一个集中式存储和处理大量数据的平台&#xff0c;主要包括存储层、处理层、分析层和应用层四个部分。 1、存储层&#xff…

NX二次开发UF_CAM_set_clear_plane_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_clear_plane_data Defined in: uf_cam_planes.h int UF_CAM_set_clear_plane_data(tag_t object_tag, double origin [ 3 ] , double normal [ 3 ] ) overview 概述 De…

40、Flink 的Apache Kafka connector(kafka source 和sink 说明及使用示例) 完整版

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

Altium Designer学习笔记9

忽视了一个最大的问题&#xff0c;就是元器件的封装&#xff0c;不应该是根据AD系统的封装走&#xff0c;而应该是根据立创商城上的规格书&#xff0c;确认每个封装的大小&#xff0c;画出封装图&#xff0c;然后才是布局和走线。 1、确认电容的封装采用0805&#xff0c;贴片电…

ubuntu上查看各个进程的实时CPUMEM占用的办法

top常见参数top界面分析system monitorhtop1、查看htop的使用说明2、显示树状结构3、htop使用好文推荐top top的用法应该是最为普遍的 常见参数 -d 更新频率,top显示的界面几秒钟更新一次 -n 更新的次数,top显示的界面更新多少次之后就自动结束了 当然也可以将top日志通过…

如何从Android设备存储卡上恢复已删除的照片

Android 手机现在使用相机拍照。 将照片和图像保存在SD卡上后&#xff0c;您可以学习如何在Android上从SD卡中检索已删除的照片&#xff0c;这是最好的工具。 第1部分&#xff1a;如何在Android上从SD卡恢复已删除的图片 由于Android SD卡提供了额外的空间来存储文件&#xff…

浅谈能源智能管理系统在大学高校中的应用

安科瑞 华楠 摘要&#xff1a;结合深圳南方科技大学能效系统工程设计实例&#xff0c;针对校园中电耗、热量消耗、冷量消耗及水资源消耗数据的采集、传输、分析管理系统&#xff0c;分析了系统中的水、电、气在高校中的能耗分布&#xff0c;并阐述了节能应用方案&#xff0c;可…

360:流氓or保家卫国的勇士?

你曾用过360吗&#xff0c;这个在国内名声不好的杀毒软件&#xff0c;却是令国外黑客闻风丧胆的存在。 首先&#xff0c;在电脑病毒刚兴起的年代&#xff0c;杀毒软件是要收费的&#xff0c;当时盛行的瑞星和金山就是采用的付费模式&#xff0c;而就在2006年&#xff0c;奇虎…