rhce:web服务器

web服务器简介

服务器端:此处使用 nginx 提供 web 服务, RPM 包获取: http://nginx.org/packages/
/etc/nginx/
├── conf.d #子配置文件目录
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params #用以翻译nginx的变量供php识别
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types #用以配置支持的媒体文件类型
├── mime.types.default
├── nginx.conf #主配置文件
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params #用以配置nginx的变量供python识别
├── uwsgi_params.default
└── win-utf
[root@localhost ~]# tree /usr/share/nginx/html/ #默认的nginx网站根目录
[root@localhost ~]# tree /var/log/nginx/ #nginx的日志文件所在目录
http 协议请求的工作流程
1 )终端客户在 web 浏览器地址栏输入访问地址 http://www.ceshi.com:80/index.html
2 web 浏览器请求 DNS 服务器把域名 www.ceshi.com 解析成 web 服务器的 IP 地址
3 web 浏览器将端口号(默认是 80 )从访问地址( URL )中解析出来
4 web 浏览器通过解析后的 ip 地址及端口号与 web 服务器之间建立一条 TCP 连接
5 )建立 TCP 连接后, web 浏览器向 web 服务器发送一条 HTTP 请求报文
6 web 服务器响应并读取浏览器的请求信息,然后返回一条 HTTP 响应报文。
7 web 服务器关闭 HTTP 连接,关闭 TCP 连接, web 浏览器显示访问的网站内容到屏幕上。
配置nginx
安装nginx程序
[root@localhost ~]# dnf install nginx -y

练习:

1.搭建静态网站——基于http协议的静态网站

1.1 搭建一个web服务器,访问该服务器时显示“hello world”欢迎界面 。

[root@localhost ~]# echo "hello world" > /usr/share/nginx/html/index.html
[root@localhost ~]# curl localhost
hello world
[root@localhost ~]# curl 192.168.30.34
hello world

1.2 建立两个基于ip地址访问的网站,要求如下

该网站 ip 地址的主机位为 100 ,设置首页目录为 /www/ip/100 ,网页内容为: this is 100
该网站 ip 地址主机位为 200 ,设置首页目录为 /www/ip/200 ,网页内容为: this is 200
[root@localhost ~]# nmtui  //进入网络配置界面,添加{100,200}IP地址
[root@localhost ~]# nmcli connection up ens33  //重新连接[root@localhost ~]# mkdir -pv /www/ip/{100,200}
[root@localhost ~]# echo this is 100 > /www/ip/100/index.html
[root@localhost ~]# echo this is 200 > /www/ip/200/index.html//设置selinux,必须设置,否则无法看到网页页面内容
[root@server html]# setenforce 0
[root@server html]# getenforce
Permissive#新建文件,写入如下配置
[root@localhost ~]# vim /etc/nginx/conf.d/test_ip.conf
server {listen 192.168.30.100:80;root /www/ip/100;
}
server {listen 192.168.30.200:80;root /www/ip/200;location / {}
}[root@localhost ~]# systemctl restart nginx  //重启nginx服务
[root@localhost ~]# curl 192.168.168.100
this is 100
[root@localhost ~]# curl 192.168.168.200
this is 200

1.3 建立两个基于不同端口访问的网站,要求如下:

建立一个使用 web 服务器默认端口的网站,设置网站首页目录为 /www/port/80 ,网页内容为: the
port is 80
建立一个使用 10000 端口的网站,设置网站首页目录为 /www/port/10000 ,网页内容为: the port
is 10000
[root@localhost ~]# nmtui   //添加一个IP地址为192.168.30.132
[root@localhost ~]# nmcli connection up ens33

1.4  建立两个基于域名访问的网站,要求如下:
新建一个网站,域名为 www.ceshi.com ,设置网站首页目录为 /www/name ,网页内容为 this is
test
新建一个网站,域名为 rhce.first.day ,同时可通过 ce.first.day 访问,设置网站首页目录
/www/ce, 网页内容为: today is first day of class
基于域名的网站,需要用到域名解析。 域名 ------->ip 地址
浏览器如何通过域名去查询 URL 对应的 IP (对应服务器地址):
1 、浏览器缓存:浏览器会按照一定的频率缓存 DNS 记录。
2 、操作系统缓存:如果浏览器缓存中找不到需要的 DNS 记录,那就去操作系统中的 hosts 文件找。hosts 是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联" 数据库 " ,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从 Hosts 文 件中寻找对应的IP 地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS 域名解析服务器进行 IP 地址的解析。
        windows下的 hosts 文件路径: C:\Windows\System32\drivers\etc\hosts
        Linux下的 hosts 文件路径 :/etc/hosts
3 、路由缓存:路由器也有 DNS 缓存。
4 ISP DNS 服务器: ISP 是互联网服务提供商 (Internet Service Provider) 的简称, ISP 有专门的
DNS 服务器应对 DNS 查询请求。
5 、根服务器: ISP DNS 服务器还找不到的话,它就会向根服务器发出请求,进行递归查询
DNS 服务器先问根域名服务器 .com 域名服务器的 IP 地址,然后再问 .com 域名服务器,依次类推)

 

# 使用IP地址为192.169.30.100的来做实验
[root@localhost ~]# mkdir /www/{name,ce}
[root@localhost ~]# echo this is test > /www/name/index.html
[root@localhost ~]# echo today is first day of class > /www/ce/index.html
[root@localhost ~]# vim /etc/nginx/conf.d/test_servername.conf
server {listen 192.168.30.100:80;server_name www.ceshi.com;root /www/name;location / {}
}
server {listen 192.168.30.100:80;server_name rhce.first.day ce.first.day;root /www/ce;location / {}
}# 测试
[root@localhost ~]# vim /etc/hosts
192.168.30.100 www.ceshi.com rhce.first.day ce.first.day
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl www.ceshi.com
this is test
[root@localhost ~]# curl rhce.first.day
today is first day of class
[root@localhost ~]# curl ce.first.day
today is first day of class

1.5 基于虚拟目录和用户控制的web网站

虚拟目录实现

[root@localhost ~]# nmtui   //添加一个IP地址为192.168.30.155
[root@localhost ~]# nmcli connection up ens33#虚拟目录实现
[root@localhost ~]# cat /etc/nginx/conf.d/test_virtualdir.conf
server {listen 192.168.30.155:80;root /usr/share/nginx/html;location /real {alias /www/real;}
}[root@localhost ~]# mkdir /www/real/
[root@localhost ~]# echo real-virtual > /www/real/index.html
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl 192.168.30.155/real/   
real-virtual

 用户访问控制

#用户访问控制
[root@localhost ~]# cat /etc/nginx/conf.d/test_virtualdir.conf
server {listen 192.168.30.155:80;root /usr/share/nginx/html;location /real {alias /www/real;auth_basic on;auth_basic_user_file /etc/nginx/conf.d/auth-password;}
}
[root@localhost ~]# dnf install httpd-tools -y
[root@localhost ~]# htpasswd -cb /etc/nginx/conf.d/auth-password user1
123456
[root@localhost ~]# systemctl restart nginx

2. 搭建静态网站——基于https协议的静态网站

1 https 简介
超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息。 HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP 协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议 HTTPS
HTTPS (全称: Hyper Text Transfer Protocol over Secure Socket Layer Hypertext Transfer  Protocol Secure ,超文本传输安全协议),是以安全为目标的 HTTP 通道。 HTTPS并不是一个新协议, 而是 HTTP+SSL TLS )。原本 HTTP 先和 TCP (假定传输层是 TCP 协议)直接通信,而加了 SSL 后,就变成HTTP 先和 SSL 通信,再由 SSL TCP 通信,相当于 SSL 被嵌在了 HTTP TCP 之间。
(2)
SSL 协议分为两层:
SSL 记录协议 ( SSL Record Protocol ):它建立在可靠的传输协议(如 TCP )之上,为高层协议提供数据封装、压缩、加密等基本功能。
SSL 握手协议( SSL Handshake Protocol ):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
SSL 协议提供的服务:
1 )认证用户和服务器,确保数据发送到正确的客户机和服务器
2 )加密数据以防止数据中途被窃取
3 )维护数据的完整性,确保数据在传输过程中不被改变

 https网站配置

[root@localhost ~]# nmtui   //添加一个IP地址为192.168.30.156提供给https
[root@localhost ~]# nmcli connection up ens33
[root@localhost ~]# mkdir -pv /www/https/
[root@localhost ~]# echo https > /www/https/index.html//此处为空
[root@localhost conf.d]# cd /etc/pki/tls/certs/
[root@localhost certs]# openssl genrsa -out https.key   //key是私钥文件
[root@localhost certs]# openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
[[root@localhost ~]# cat /etc/nginx/conf.d/test_https.conf
server {# listen 80;listen 192.168.30.156:443 ssl;root /www/https;ssl_certificate /etc/pki/tls/certs/https.crt;ssl_certificate_key /etc/pki/tls/certs/https.key;location / {}
}
[root@localhost ~]# systemctl restart nginx
#检查
[root@localhost ~]# curl --insecure https://192.168.30.156
https
[root@localhost ~]# curl -k https://192.168.30.156
https

3.搭建动态网站

动态网站并不是指具有动画功能的网站,而是指网站内容可根据不同情况动态变更的网站,一般情况下
动态网站通过数据库进行架构。 动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更
多自动的和高级的功能。
动态网页:使用网页脚本语言,比如 php JSP 等,通过脚本将网站内容动态存储到数据库,用户访问网
站是通过读取数据库来动态生成网页的方法。
[root@localhost ~]# nmtui   //添加一个IP地址为192.168.30.136
[root@localhost nginx]# nmcli connection up ens33
[root@localhost ~]# dnf install php php-fpm -y
[root@localhost ~]# systemctl restart nginx php-fpm
[root@ntp-server ~]# vim /usr/share/nginx/html/index.php//写入  <?php phpinfo(); ?>  
#使用浏览器访问

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

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

相关文章

解决使用netstat查看端口显示FIN_WAIT的问题

解决使用netstat查看端口显示FIN_WAIT的问题 1. 理解`FIN_WAIT`状态2. 检查应用程序3. 检查网络延迟和稳定性4. 更新和修补系统5. 调整TCP参数6. 使用更详细的工具进行分析7. 咨询开发者或技术支持8. 定期监控和评估结论在使用 netstat查看网络连接状态时,如果发现大量连接处…

01LangChain 实战课开篇——AI奇点时刻

LangChain 实战课开篇——AI奇点时刻 课程简介 课程背景&#xff1a;随着ChatGPT和GPT-4的出现&#xff0c;AI技术与实际应用之间的距离变得前所未有的近。LangChain作为基于大模型的应用开发框架&#xff0c;为程序员提供了开发智能应用的新工具。 LangChain 概述 定义&am…

【java】java的基本程序设计结构06-运算符

运算符 一、分类 算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符 1.1 算术运算符 操作符描述例子加法 - 相加运算符两侧的值A B 等于 30-减法 - 左操作数减去右操作数A – B 等于 -10*乘法 - 相乘操作符两侧的值A * B等于200/除法 - 左操作数除以右操作数B /…

Spring Cloud Sleuth(Micrometer Tracing +Zipkin)

分布式链路追踪 分布式链路追踪技术要解决的问题&#xff0c;分布式链路追踪&#xff08;Distributed Tracing&#xff09;&#xff0c;就是将一次分布式请求还原成调用链路&#xff0c;进行日志记录&#xff0c;性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节…

关于我的编程语言——C/C++——第四篇(深入1)

&#xff08;叠甲&#xff1a;如有侵权请联系&#xff0c;内容都是自己学习的总结&#xff0c;一定不全面&#xff0c;仅当互相交流&#xff08;轻点骂&#xff09;我也只是站在巨人肩膀上的一个小卡拉米&#xff0c;已老实&#xff0c;求放过&#xff09; 字符类型介绍 char…

一台手机可以登录运营多少个TikTok账号?

很多TikTok内容创作者和商家通过运营多个账号来实现品牌曝光和产品销售&#xff0c;这种矩阵运营方式需要一定的技巧和设备成本&#xff0c;那么对于很多新手来说&#xff0c;一台手机可以登录和运营多少个TikTok账号呢&#xff1f; 一、运营TikTok账号的数量限制 TikTok的官…

DNS服务器部署

一、要求 1.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 2.配置从DNS服务器&#xff0c;对主dns服务器进行数据备份。 二、配置 1.搭建dns服务器能够对自定义的正向或者反向域完成数据解析查询。 &#xff08;1&#xff09;首先需要安装bind服务 &#xf…

三周精通FastAPI:28 构建更大的应用 - 多个文件

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/tutorial/bigger-applications 更大的应用 - 多个文件 如果你正在开发一个应用程序或 Web API&#xff0c;很少会将所有的内容都放在一个文件中。 FastAPI 提供了一个方便的工具&#xff0c;可以在保持所有灵活性的同时…

【react使用AES对称加密的实现】

react使用AES对称加密的实现 前言使用CryptoJS库密钥存放加密方法解密方法结语 前言 项目中要求敏感信息怕被抓包泄密必须进行加密传输处理&#xff0c;普通的md5加密虽然能解决传输问题&#xff0c;但是项目中有权限的用户是需要查看数据进行查询的&#xff0c;所以就不能直接…

【STM32】INA3221三通道电压电流采集模块,HAL库

一、简单介绍 芯片的datasheet地址&#xff1a; INA3221 三通道、高侧测量、分流和总线电压监视器&#xff0c;具有兼容 I2C 和 SMBUS 的接口 datasheet (Rev. B) 笔者所使用的INA3221是淘宝买的模块 原理图 模块的三个通道的电压都是一样&#xff0c;都是POWER。这个芯片采用…

《机器人SLAM导航核心技术与实战》第1季:第10章_其他SLAM系统

视频讲解 【第1季】10.第10章_其他SLAM系统-视频讲解 【第1季】10.1.第10章_其他SLAM系统_RTABMAP算法-视频讲解 【第1季】10.2.第10章_其他SLAM系统_VINS算法-视频讲解 【第1季】10.3.第10章_其他SLAM系统_机器学习与SLAM-视频讲解 第1季&#xff1a;第10章_其他SLAM系统 …

《HelloGitHub》第 103 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

【OJ题解】C++实现反转字符串中的每个单词

&#x1f4b5;个人主页: 起名字真南 &#x1f4b5;个人专栏:【数据结构初阶】 【C语言】 【C】 【OJ题解】 题目要求&#xff1a;给定一个字符串 s &#xff0c;你需要反转字符串中每个单词的字符顺序&#xff0c;同时仍保留空格和单词的初始顺序。 题目链接: 反转字符串中的所…

Oracle OCP认证考试考点详解082系列09

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 41. 第41题&#xff1a; 题目 41.Examine the description of the EMPLOYEES table NLS_DATE_FORMAT is set to DD-MON-YY Which query…

创建线程时传递参数给线程

在C中&#xff0c;可以使用 std::thread 来创建和管理线程&#xff0c;同时可以通过几种方式将参数传递给线程函数。这些方法包括使用值传递、引用传递和指针传递。下面将对这些方法进行详细讲解并给出相应的代码示例。 1. 值传递参数 当你创建线程并希望传递参数时&#xff…

Linux下cgdb/gdb调试以及关于操作系统那些事

目录 一.gdb调试 1.1debug和release版本有什么区别? 1.2性能优化 1.3gdb的使用 1.4cgdb的安装 二.什么是硬件 三.冯诺依曼体系 四.操作系统(OS) 4.1理解操作系统 4.1.1操作系统是什么? 4.1.2为什么要有操作系统? 4.1.3 OS-银行 4.1.4OS如何管理 理解库文件和系…

Kafka相关知识点(上)

为什么要使用消息队列&#xff1f; 使用消息队列的主要目的主要记住这几个关键词:解耦、异步、削峰填谷。 解耦: 在一个复杂的系统中&#xff0c;不同的模块或服务之间可能需要相互依赖&#xff0c;如果直接使用函数调用或者 API 调用的方式&#xff0c;会造成模块之间的耦合…

ureport配置方法

1、项目启动后登录这个网址&#xff0c;ip和端口自己系统的 http://localhost:8080/ureport/designer 点击这个地方&#xff0c;图标类似一个文件夹选择下图标注的两个文件&#xff0c;这两个文件就是eoa系统要用到的报表文件&#xff0c;还是点击类似文件夹图标的图标 正在上…

Java学习路线:JUnit单元测试

目录 使用JUnit 导入依赖 使用Junit 添加前置/后置操作 当项目十分庞大时&#xff0c;如果想测试一个很小的功能&#xff0c;都要启动整个项目来测试&#xff0c;会很浪费时间。 那能否将某个小功能单独拆出来进行测试呢&#xff1f; 这就是单元测试的作用。而JUnit就是一…

RK3568平台(camera篇)车载摄像头串行器和解串器方案

一.串行器和解串器简介 SerDes是Serializer/Deserializer的缩写,即串行器和解串器。由于同轴线的传输延迟几乎可以忽略不计(ns级别),相当于将原来只能短距离传输的高速并行信号(MIPI/I2C/CLK等)的传输距离延长,真正做到高带宽、低延迟、长距离的数据传输。 串行器(Seri…