使用nginx搭建网页

一、实验要求

网站需求:

1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!!

2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student 网站访问学生信息,www.openlab.com/data网站访问教学资料,网站访问缴费网站(http://www.openlab.com/money网站访问缴费网站)。

3.要求

(1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。

(2)访问缴费网站实现数据加密基于https访问。

二、知识点总结

1、web服务器简介

(1)什么是www

www是world wide web的缩写,也就是全球信息广播的意思。通常说的上网就是使用www来查询用户所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去。与其他服务器类似,当你连接上www网站,该网站肯定会提供一些数据,而你的客户端则必须要使用可以解析这些数据的软件来处理,那就是浏览器。www服务器与客户端浏览器之间的连接图。

(2)网址及HTTP简介

web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页。

  • 网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>

    • 浏览器常支持的协议有:http、https、ftp等。

    • 主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了。

    • 端口号(port):http为80,https为443 (IANA:互联网数字分配机构)

      • 0-1023:众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限启用并让进程监听)

      • 1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:3306/TCP

      • 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口

  • http请求方法:在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。

  • 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

    状态码范围作用描述
    100 - 199用于指定客户端相应的某些动作
    200 - 299用于表示请求成功
    300 - 399用于己经移动的文件,并且常被包含在定位头信息中指定新的地址系信息
    400 - 499用于指出客户端的错误
    500 - 599用于指出服务端的错误
  • MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)最初是为了解决在 不同的电子邮件系统之间搬移报文时存在的问题。后来http也支持了这个功能,用它来描述数据并 标记不同的数据内容类型。 当web服务器响应http请求时,会为每一个http对象数据加一个MIME类型。当web浏览器获 取到服务器返回的对象时,会去查看相关的MIME类型,并进行相应的处理。 MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象 类型和一个特定的子类型。常见的MIME类型:

    MIME类型文件类型
    text/htmlhtml、htm、shtml文本类型
    text/csscss文本类型
    text/xmlxml文本类型
    image/gifgif图像类型
    image/jpegjpeg、jpg图像类型
    application/javascriptjs文本类型
    text/plaintxt文本类型
    application/jsonjson文本类型
    video/mp4mp4视频类型
    video/quicktimemov视频类型
    video/x-flvflv视频类型
    video/x-ms-wmvwmv视频类型
    video/x-msvideoavi视频类

(3)http协议请求的工作流程

(1)终端客户在web浏览器地址栏输入访问地址域名售卖 (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浏览器显示访问的网站内容到屏幕上。

Apache: http服务器是一个模块化的服务器,可以运行几乎所有广泛使用的计算机平台上。属于应用服务器。Apache支持模块多,性能稳定,apache本身是静态解析,但也可以通过扩展脚本、模块等支持动态页面。(apache可以支持phpcgiperl,但是使用java的话需要tomcat在apache后台支持,将java请求由apache转给tomcat处理)

tomcat:应用(java)服务器,他只是一个servlet容器,可以认为是apache的扩展,但是可以独立用于apache运行。

nginx:相对一Apache占用更少的内存及资源一个轻量级服务器,是一个高性能的http和反向代理服务器,同时也是一个IMPA/POP3/SMTP代理服务器。

2.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之间。

SSL 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)。

SSL协议分为两层:

  • SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。

  • SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供的服务: 1)认证用户和服务器,确保数据发送到正确的客户机和服务器 2)加密数据以防止数据中途被窃取 3)维护数据的完整性,确保数据在传输过程中不被改变

1.请求连接,tcp三次握手 确认版本

2.秘钥套件的协商,开始身份认证(非对称算法)证书验证 协商对称算法[客户端验证服务器身份]

3.建立ssl 会话链接

4.加密会话交互

5.断开会话链接

TLS完整的通信流程

第一阶:段客户端端申请建立https连接

第二阶段:客户端和服务器确认加密版本,加密套件

1.浏览器向服务器发送一个clientHello的报文

客户端产生一个随机数Random(ClientRandom)

会话ID:第一次肯定为空

Cipher suite: 加密套件(秘钥交换,完整性校验算法,对称机密算法 ,算法列表)

2.服务端向客户端回复一个ServerHello(确认使用的TLS的版本,以及加密套件)

Random随机数:服务产生的(ServerRandom)

SessionID: 0

Cipher suite:确认使用加密套件

Compression method: null 不压缩

Extension: 扩展字段

第三阶段:证书发送验证 (客户端验证证书取出公钥,用公钥加密生成的对称秘钥发送个服务器通知改变加密信息传递)

3.服务器向客户端发送Certificate (服务器的身份证,证书由第三方权威机构颁发)

4.服务器向客户端发送serverkey Exchange(通过和客户端协商的密码算法套件发送Pubkey结合HD算法生成Premastersecret(最终加密的会话秘钥))

5.certificate Request 可选报文(认证可以是单向也可以是双向,一般都是单向客户端验证服务端身份,服务端验证客户端客户端也需要发送证书)

6.ServerHello Done 服务端发送握手信息完毕

7.客户端回复服务器报文Certificate 如果有第五阶段则提交客户端的证书进行认证

8.ClientKey Exchange 秘钥交换信息和步骤4类似

9.ChangeCiper Spec: 通知消息(消息改变通知,及后面消息要进行加密了)

10.Encrypted Handshake Messges 校验数据包的完整性MD5(hash)将数据包的值进行散列最后和服务端的散列值进行比较一致意味着沟通过程中没有第三者的介入

第四阶段:服务收到消息,用私钥解密取,确认对称秘钥通知客户端ssl通道建立完成

11.服务器向客户端回包:NewSession Ticket(建立会话票据,提供会话票据)

12.change cipher Spec: 改变密码通知加密发送信息

13.encrypted Handshake message (Finished)

第五阶段:客户端和服务端可以通过加密通道开始数据通信

Application Data(http)客户端和服务端可以通过加密通道开始数据通信

第六阶段:客户端断开连接

三、实验思路

首先主机上需要安装nginx服务以及http服务
1、在nginx的主配置文件‘vim /etc/nginx/nginx.conf’主配置文件中由于有include /etc/nginx/conf.d/*.conf;他会将/etc/nginx/conf.d/目录下的所有以.conf结尾的子配置文件导入到主配置文件中加载,所以只需在/etc/nginx/conf.d/目录下创建子配置文件配置即可。2、创建/www/openlab/ 主目录存放网页文件以及创建主目录下的子目录/student/       /data/   子界面网页文件 按照要求单独在/www 放money的子网页文件3、创建子配置文件进行编写内容4、安装htppd-tools,配置用户认证,并在子配置文件进行编写5、创建https所需的密钥和数据证书,并在子配置文件对其路径进行编写

四、实验步骤

安装服务并启动这里关闭selinux和防火墙

[root@server ~]# yum install nginx http -y
[root@server ~]# systemctl start nginx
systemctl stop firewalld        # 关闭防火墙
setenforce 0                    # 关闭selinux

创建文件

[root@server ~]# cat /www/
money/   openlab/ 
[root@server ~]# cat /www/openlab/
data/       index.html  student/   

配置文件主页文件地址

[root@server ~]# vim /etc/nginx/conf.d/openlab.conf 
server {listen 192.168.1.14:80;server_name www.openlab.com;root    /www/openlab;location / {index index.html;}
}

写入主页内容

[root@server ~]# echo welcome to openlab > /www/openlab/index.html 

查看主页信息

[root@server ~]# curl www.openlab.com
welcome to openlab

编辑子界面信息

server {listen 192.168.1.14:80;         --> 要监听服务器的IP地址及端口号server_name www.openlab.com;     服务器名称root    /www/openlab;            主页存放路径
#学生信息location /student {      #location 定义用户请求的url,并返回相应的资源文件index index.html;          索引文件的文件名alias /www/openlab/student;auth_basic on;auth_basic_user_file /etc/nginx/users;}
#教学资料location /data {index index.html;alias /www/openlab/data;}
}#缴费网站
server {listen 192.168.1.14:443 ssl;server_name www.openlab.com;root    /www/money/;ssl_certificate "/etc/pki/tls/certs/openlab.crt";ssl_certificate_key "/etc/pki/tls/private/openlab.key";location /money {index index.html;alias /www/money/;}
}

写入子文件内容

[root@server ~]# echo this id data > /www/openlab/data/index.html
[root@server ~]# echo this id money > /www/money/index.html
[root@server ~]# echo this id student  > /www/openlab/student/index.html

查看子界面信息(其他两个也是一样的方法)

[root@server ~]# echo this id data > /www/openlab/data/

按照要求

1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。

   添加用户认证

[root@openEuler ~]# htpasswd -c /etc/nginx/conf.d/users song        # 第一次创建加-c创建文件
New password:                                # 输入密码用户
Re-type new password:                         # 再次输入确认
Adding password for user song
[root@openEuler ~]# htpasswd /etc/nginx/conf.d/users tian            # 第二次不加-c,否则覆盖上一次信息
New password: 
Re-type new password: 
Adding password for user tian


结果

配置子配置文件,添加用户认证信息及认证的目录文件
在学生信息处添加两行配置

2)访问缴费网站实现数据加密基于https访问。

创建秘钥和证书

重启服务并验证

因为www.openlab.com未备案注册,想要以域名访问需在windows或者linux的hosts文件添加映射关系,
windows:修改hosts文件方法


使用管理员打开记事本文件

最后一行添加映射

或者linux:修改hosts


vim /etc/hosts,在最后一行添加映射关系

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

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

相关文章

【GAMES101】Lecture 08 着色频率

目录 着色频率 Flat shading&#xff08;平面着色&#xff09; Gouraud shading&#xff08;顶点着色&#xff09; Phong shading&#xff08;像素着色&#xff09; 如何计算法线 着色频率 大家可以看到下面这三个球是看起来不一样的是吧&#xff0c;但是其实这三个球用的…

Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界面

一、前言 这个系列对应自定义控件大全&#xff0c;一个专注于控件的编写&#xff0c;一个专注于UI界面的编写&#xff0c;程序员有两大软肋&#xff0c;一个是忌讳别人说自己的程序很烂很多bug&#xff0c;一个就是不擅长UI&#xff0c;基本上配色就直接rgb&#xff0c;对于第…

c++:基于c语言基础上的语法不同(1)

前言&#xff1a;此篇文章适合学完c语言基础概念的同学&#xff0c;是帮助c向c语言的同学快速掌握基本语法。 基础格式 #include<iostream>using namespace std; int main() {system("pause");return 0; } 输入&#xff1a; cin>>a;//a是输入内容 输出…

Spark-RDD算子大全

Spark RDD&#xff08;弹性分布式数据集&#xff09;是Spark中的核心抽象&#xff0c;它代表一个不可变、分区的分布式数据集合。下面是一些常用的RDD算子&#xff1a; 转换算子&#xff1a; map(func)&#xff1a;对RDD中的每个元素应用给定的函数&#xff0c;返回一个新的RD…

vue基于Spring Boot的中医在线学习课程购买服务管理系统

SpinrgBoot的主要优点有&#xff1a; 1、为所有spring开发提供了一个更快、更广泛的入门体验&#xff1b; 2、零配置&#xff1b; 3、集成了大量常用的第三方库的配置&#xff1b; 4、提供准备好的特性。当今&#xff0c;nodejs领域的开发者机会都在使用SpinrgBoot,在开发领域逐…

【探索C++容器:vector的使用和模拟实现】

【本节目标】 1.vector的介绍及使用 2.vector深度剖析及模拟实现 1.vector的介绍及使用 1.1 vector的介绍 vertor文档介绍 1. vector是表示可变大小数组的序列容器。2. 就像数组一样&#xff0c;vector也采用连续存储空间来存储元素。也就是意味着可以采用下标对vector的元…

Deepin/Ubuntu_查看磁盘空间大小

以下是Linux系统&#xff08;Deepin、Ubuntu&#xff09;查看磁盘空间大小的代码示例&#xff1a; 使用df命令&#xff1a; df -h使用du命令查看指定目录的磁盘使用情况&#xff1a; du -sh /path/to/directory使用lsblk命令&#xff1a; lsblk使用fdisk命令查看磁盘分区表…

轻松一刻 浅休息下哈

yum -y install epel-release yum install -y linux_logo cal 此命令以日历表的方式显示日期 curl http://wttr.in 此网站进行在屏幕上面显示天气情况

Linux下安装docker

1、查看系统版本 Docker支持64位版本的CentOS 7和CentOS 8及更高版本&#xff0c;它要求Linux内核版本不低于3.10。查看Linux版本的命令这里推荐两种&#xff1a;lsb_release -a或cat /etc/redhat-release。 显然&#xff0c;当前Linux系统为CentOS7。再查一下内核版本是否不低…

关于python环境变量相关的配置汇总(venv虚拟环境/conda环境/pip相关)

关于python环境变量相关的配置汇总(venv虚拟环境/conda环境/pip相关) 本文作者&#xff1a; slience_me 文章目录 关于python环境变量相关的配置汇总(venv虚拟环境/conda环境/pip相关)1. python环境配置相关1.1 系统环境1.2 Anaconda环境相关1.2.1 安装1.2.2 查看python环境 1.…

面试150-76(Leetcode114二叉树展开为链表)

代码&#xff1a; 0124 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode righ…

【软件测试常见Bug清单】

软件测试中&#xff0c;bug的类型有很多种&#xff0c;比如&#xff1a;代码错误、界面优化、设计缺陷、需求补充和用户体验等&#xff1b; 一般情况下&#xff0c;需求补充和设计缺陷比较好区分&#xff0c;但是代码错误、界面优化和用户体验区分不是很明显&#xff1b; 下面…

MySQL存储函数和存储过程练习题

一、创建表的要求 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 sch表内容 id name glass 1 xiaommg …

【GitHub项目推荐--名校课程资源】【转载】

先引用一段话&#xff0c;今天推荐的所有 GitHub 项目创立动机几乎都是这个。本文会盘点清华、北大、斯坦福、中国科学技术大学、上海交大等学校的课程资源。 01. 浙江大学课程共享计划 上图截屏中的话就是出自该项目&#xff0c;浙江大学搞了一个课程共享计划&#xff0c;其…

安装RabbitMQ sentos并挂载

1. usr/local/software/mq/data 创建data目录, mkdir data 2. 拉取镜像 docker pull rabbitmq 3.配置网络 docker network create --driver bridge --subnet172.18.12.0/16 --gateway172.18.1.1 wn_docker_net 4. 设置参数并创建挂载 docker run -it \ --name rabbitmq \…

一文说明白 MySQL 的 ACID 和 几种日志的关系

1、简介 我们对于MySQL 很熟悉&#xff0c;关于其特性都有一定的了解&#xff0c;但是关于一些具体的实现原理&#xff0c;有的小伙伴可能不太熟悉&#xff0c;而且这部分知识在我们互联网大厂面试中是经常涉及的&#xff0c;因此&#xff0c;本文将带你深入底层&#xff0c;顺…

力扣日记1.19-【二叉树篇】538. 把二叉搜索树转换为累加树

力扣日记&#xff1a;【二叉树篇】538. 把二叉搜索树转换为累加树 日期&#xff1a;2023.1.19 参考&#xff1a;代码随想录、力扣 ps&#xff1a;因为准备组会汇报又搁置了好久&#xff08;其实就是懒逃避T^T)&#xff0c;但这是最后一道二叉树啦啊啊啊&#xff01;&#xff01…

递归、搜索与回溯算法(专题六:记忆化搜索)

目录 1. 什么是记忆化搜索&#xff08;例子&#xff1a;斐波那契数&#xff09; 1.1 解法一&#xff1a;递归 1.2 解法二&#xff1a;记忆化搜索 1.2.1 记忆化搜索比递归多了什么&#xff1f; 1.2.2 提出一个问题&#xff1a;什么时候要使用记忆化搜索呢&#xff1f; 1.3 …

第十三章 MySQL

第十三章 MySQL 下面是创建数据库操作 删除数据库 右上角选择要操作的数据库 如果关闭了这个控制台&#xff0c;下次如何找到它呢 也可以对其改名

Linux环境下,针对QT软件工程搭建C++Test单元测试环境的操作指南

文章目录 前言一、安装QT二、安装CTest三、使用QT生成.bdf文件四、创建CTest工程注意事项 前言 CTest是Parasoft公司出品的一款可以针对C/C源代码进行静态分析、单元测试、集成测试的测试工具。本文主要讲解如何在Linux环境下&#xff0c;搭建QT插件版的CTest测试环境。 一、…