web服务器

目录

1、web服务器简介

2、web服务器的类型

3、web服务器基本配置

4、实验 --- 基于http协议的静态网站

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

(2)实验2:建立两个基于ip地址访问的网站

(3)建立两个基于不同端口访问的网站

(4)建立两个基于域名访问的网站

(5)基于虚拟目录和用户控制的web网站

5、基于https协议的静态网站

1、web服务器简介

1、 www所用的协议: 浏览器怎样向web服务器请求数据以及服务器怎样把文档传送给浏览器呢?这就是 由http协议来定义的,(Hyper Text Transport Protocol,HTTP,超文本传输协议)。

2、www服务器需要提供可让客户端浏览的平台。目前最主流的Web服务器是Apache、Microsoft的 Internet信息服务器(Internet Information Services,IIS)和unix nginx。

3、服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML)、多媒体 文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓 的标记来规范所要显示的数据格式。

4、客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。那 么著名的浏览器就有内建在Windows操作系统内的IE浏览器了,还有Firefox浏览器和Google的 chrome浏览器。

2、web服务器的类型

(1)仅提供用户浏览的单向静态网页 单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,所以你可以到该网站上去浏 览,但是无法进行数据的上传。

(2)提供用户互动接口的动态网站 这种类型的网站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过“网页程 序语言”来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、 写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据 库,变动的是数据库的内容,网页程序并没有任何改变。

另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码(JavaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外 一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计。搭建动态网站的需 求:

3、web服务器基本配置


#安装nginx软件包:
[root@server ~]# yum install nginx -y

#以树状图显示nginx配置文件目录:
[root@server ~]# tree /etc/nginx/
/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
 
#显示nginx默认的网站根目录(通常包含静态网页文件)
[root@server ~]# tree /usr/share/nginx/html/
 
#显示nginx日志目录(通常包含访问日志和错误日志)
[root@server ~]# tree /var/log/nginx
 
#搜索匹配nginx的主配置文件中不以#开头的行(即非注释行)
[root@server ~]# grep ^[^#]  /etc/nginx/nginx.conf
#关闭防火墙
[root@server ~]# systemctl disable firewalld --now
 
#将SELinux设置为宽容模式
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive
 
#重启nginx进程:
[root@server ~]# systemctl restart nginx
 
#curl:这是一个命令行进行数据传输的工具,支持多种协议包括http、https、ftp等等
#测试可以使用curl命令访问web服务器或者使用浏览器访问
[root@server ~]# curl -I localhost
HTTP/1.1 200 OK                    #表示使用的HTTP协议版本
Server: nginx/1.20.1               #服务器软件的名称和版本。这里显示的是Nginx 1.20.1
Date: Fri, 25 Oct 2024 15:48:29 GMT 
Content-Type: text/html            #返回内容的MIME类型。这里表示返回的内容是HTML文档
Content-Length: 2713881            #返回内容的长度(以字节为单位)。这里表示返回的HTML文档大小为2,713,881字节。
Last-Modified: Tue, 04 Jun 2024 22:57:12 GMT
Connection: keep-alive             #连接管理方式。这里表示保持连接打开
ETag: "665f9bc8-296919"            #实体标签,用于缓存验证。ETag是一个唯一标识符,用于判断资源是否被修改
Accept-Ranges: bytes               #指示服务器是否接受范围请求。这里表示服务器接受按字节范围请求,允许客户端请求部分内容

4、实验 --- 基于http协议的静态网站

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

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

[root@server ~]# curl 192.168.88.5
hello world

(2)实验2:建立两个基于ip地址访问的网站

该网站ip地址的主机位为100,设置首页目录为/www/ip/100,网页内容为:this is 100

该网站ip地址的主机位为200,设置首页目录为/www/ip/200,网页内容为:this is 200。

首先确保虚拟机上有两个IP地址(可用nmtui图形界面配置,在使用nmcli connection up ens160命令激活)

#递归创建目录,并且显示每一个被创建的目录:
[root@server ~]# mkdir -pv /www/ip/{1,2}00
mkdir: created directory '/www'
mkdir: created directory '/www/ip'
mkdir: created directory '/www/ip/100'
mkdir: created directory '/www/ip/200'
 
#将内容写入到指定文件中:
[root@server ~]# echo this is 100 > /www/ip/100/index.html
[root@server ~]# echo this is 200 > /www/ip/200/index.html
 
#更改SELinux设置:
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive
 
#编辑nginx配置文件下的ip测试文件:
[root@server ~]# vim /etc/nginx/conf.d/test_ip.conf
 
server {
 
        listen 192.168.88.100:80;
        root /www/ip/100;
        location / {
        }
}
server {
 
        listen 192.168.88.200:80;
        root /www/ip/200;
        location / {
        }
}
 
#重启nginx服务:
[root@server ~]# systemctl restart nginx
 
#使用curl向配置文件中写入的IP地址发送HTTP请求:
[root@server ~]# curl 192.168.88.100
this is 100
[root@server ~]# curl 192.168.88.200
this is 200

(3)建立两个基于不同端口访问的网站

建立一个使用 web 服务器默认端口的网站,设置网站首页目录为 /www/port/80 ,网页内容为: the port is 80 。
建立一个使用 10000 端口的网站,设置网站首页目录为 /www/port/10000 ,网页内容为: the port
is 10000 。

#递归创建目录,并且显示每一个被创建的目录:
[root@server ~]# mkdir -pv /www/port/{80,10000}
mkdir: created directory '/www/port'
mkdir: created directory '/www/port/80'
mkdir: created directory '/www/port/10000'
 
#创建对应的网页文件并写入内容:
[root@server ~]# echo this port is 80 > /www/port/80/index.html
[root@server ~]# echo this port is 10000 > /www/port/10000/index.html
 
#进入图形界面添加IP,并激活网络:
[root@server ~]# nmtui
[root@server ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
 
#编辑nginx的配置文件:
[root@server ~]# vim /etc/nginx/conf.d/test_port.conf
server {
        listen 192.168.88.120:80;
        root /www/port/80;
        location / {
        }
}
server {
        listen 192.168.88.120:10000;
        root /www/port/10000;
        location / {
        }
}
 
#重启nginx服务:
[root@server ~]# systemctl restart nginx
 
#向指定端口的IP地址进行HTTP的请求测试:
[root@server ~]# curl 192.168.88.120
this port is 80
[root@server ~]# curl 192.168.88.120:80
this port is 80
[root@server ~]# curl 192.168.88.120:10000
this port is 10000

(4)建立两个基于域名访问的网站

新建一个网站,域名为www.ceshi.com,设置网站首页目录为/www/name,网页内容为this is test。

新建一个网站,域名为rhce.first.day,同时可通过ce.first.day访问,设置网站首页目录 为/www/ce,网页内容为:today is first day of class。

#进入图形界面添加ip,并激活网络:
[root@server ~]# nmtui
[root@server ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
 
#以递归的方式创建文件,并且显示被创建的文件:
[root@server ~]# mkdir -pv /www/{name,ce}
mkdir: created directory '/www/name'
mkdir: created directory '/www/ce'
 
#向指定文件写入内容:
[root@server ~]# echo this is a test > /www/name/index.html
[root@server ~]# echo today is first day of class > /www/ce/index.html
 
#编辑nginx网页配置文件:
[root@server ~]# vim /etc/nginx/conf.d/test_servername.conf
 
server {
        listen 192.168.88.130:80;
        server_name www.ceshi.com;  #server_name 指令用于指定该服务器块处理的域名
        root /www/name;
        location / {
        }
}
server {
        listen 192.168.88.130:80;
        server_name rhce.first.day ce.first.day;
        root /www/ce;
        location / {
        }
}
 
 
[root@server ~]# vim /etc/hosts
192.168.88.130  www.ceshi.com rhce.first.day ce.first.day
 
#更改SELinux状态,并且检查其状态:
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive
 
使用curl进行测试:
[root@server ~]# curl www.ceshi.com
this is a test
[root@server ~]# curl rhce.first.day
today is first day of class
[root@server ~]# curl ce.first.day
today is first day of class

(5)基于虚拟目录和用户控制的web网站

#进入图形界面添加IP,并激活网络:
[root@server ~]# nmtui
[root@server ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
 
[root@server ~]# mkdir /www/real/
[root@server ~]# echo real_virtual > /www/real/index.html
[root@server ~]# systemctl restart nginx
[root@server ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
server {
        listen 192.168.88.140:80;
        root /usr/share/nginx/html;
        location /real {    #指令用于定义如何处理特定的 URL 路径。在这个例子中,它定义了对路径 /real 的处理方式
                alias /www/real;    #alias 指令将指定的路径映射到另一个文件系统路径。在这个例子中,当客户端请求 /real 路径时,Nginx 会将其映射到 /www/real 目录
                auth_basic on;    #auth_basic 指令启用基本认证(Basic Authentication)。这意味着访问该路径需要用户名和密码。
                auth_basic_user_file /etc/nginx/conf.d/auth-password;    #auth_basic_user_file 指令指定存储用户名和密码的文件
        }
}
 
#使用yum安装httpd-tools包
[root@server ~]# yum install httpd-tools -y
 
#htpasswd:生成或更新HTTP基本认证密码文件的工具
 
#添加一个新用户,并且创建一个密码文件从命令行中读取密码:
[root@server ~]# htpasswd -cb /etc/nginx/conf.d/auth-password user1 123
Adding password for user user1
[root@server ~]# systemctl restart nginx
[root@server ~]# curl 192.168.88.140
hello world
[root@server ~]# curl 192.168.88.140/real/
<html>
<head><title>401 Authorization Required</title></head>
<body>
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.20.1</center>
</body>
</html>
[root@server ~]# curl 192.168.88.140/real/ -u user1
Enter host password for user 'user1':
real_virtual
 

5、基于https协议的静态网站

https网站配置

[root@server certs]# nmtui
[root@server certs]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
 
#禁用并立即停止firewalld服务:
[root@server ~]# systemctl disable firewalld --now
 
#将SElinux模式设置为宽松模式:
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive
 
#创建相关的目录以及文件:
[root@server ~]# mkdir -pv /www/https/
mkdir: created directory '/www/https/'
[root@server ~]# echo https > /www/https/index.html
[root@server ~]# cd /etc/pki/tls/certs/
 
#生成一个私钥文件:
[root@server certs]# openssl genrsa -out https.key
 
#生成一个自签名证书:
[root@server certs]# openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
 
#编辑nginx的配置文件:
[root@server certs]# vim /etc/nginx/conf.d/test_https.conf
server {    #定义一个新的服务器块。Nginx 使用这种结构来组织和管理不同的虚拟主机(Virtual Host)
        listen 192.168.88.150:443 ssl; #指定服务器监听的 IP 地址和端口。在这里,服务器监听 192.168.88.150 的 443 端口,并且启用了 SSL(HTTPS)
        root /www/https;  #指令设置服务器的根目录。当客户端请求一个文件时,Nginx 会从这个目录中查找文件
        ssl_certificate /etc/pki/tls/certs/https.crt;  #指令指定 SSL 证书文件的位置
        ssl_certificate_key /etc/pki/tls/certs/https.key;  #指令指定 SSL 私钥文件的位置
        location / {    #指令用于定义如何处理特定的 URL 路径
        }
}
 
#重启nginx服务:
[root@server certs]# systemctl restart nginx
 
#测试
[root@server certs]# curl --insecure https://192.168.88.150
https

[root@server certs]# curl -k  https://192.168.88.150
https

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值