一、相关名词解释及概念:
www:(world wide web)全球信息广播,通常来说的上网就是使用www来查询用户所需的信息。使用http超文本传输协议。
过程:web浏览器向web服务(Apache,Microsoft,nginx)端发送web请求。www服务器需要提供可让客户端浏览的平台。服务器所提供的主要数据是超文本标记语言html和多媒体文件。html只是一些纯文本文件,通过所谓的标记来规范要显示的数据格式。web服务端将文档传输给浏览器(即客户端)。客户端收到服务器的数据之后,需要解析数据,最后将效果呈现到用户屏幕上。
客户端软件:浏览器
服务器软件:nginx
网站格式:协议://域名:端口
https://192.18.68.99
https---->端口号443(加密传输)
http---->端口号80(明文)
对于主机网络配置:
IP地址一定要有,因为这是唯一标识主机的信息。
网关也是必要的,没有网关意味着没有下一跳的信息,也就无法正常上网。
域名服务器DNS,没有DNS就无法解析网站的IP地址。例如:想要请求百度的web服务,若没有DNS,就只能使用IP地址39.156.66.10,而不能使用www.baisu.com。
二、web服务器的网页资源类型
1、静态网页资源:
单纯是由服务器向用户提供数据,server不需要向client端有任何的互动,在网页设计时,纯粹HTML格式的网页通常被称为“静态网页”。
静态解析web服务器软件:Apache、Nignx
2、动态网页资源:
这种类型的网页可以让服务器与用户互动,例如留言板、博客等。
搭建动态网页的需求:
LAMP(linux+Apache+Mysql+PHP)
Lnmp(linux+Nginx+Mysql+php)
Apache、Nginx主要提供www服务器平台
Mysql:一种特殊的格式文件,这种文件要通过特殊接口来进行读写,适合多人同时写入与查询工作。
PHP:PHP程序代码可以直接在HTML网页中嵌入,就像编辑HTML网页一样简单。PHP是一种‘程序语言’,这种程序语言可以直接在网页中编写,不需要经过编译即可执行。
三、web服务器基本配置
服务器端:使用nginx提供web服务。
yum install nginx -y #下载nginx
/etc/nginx/conf.d #配置文件目录
/etc/nginx/nginx.conf #主配置文件
grep ^[^#] /etc/nginx/nginx.conf #打印指定文件出注释以外的所有内容
/usr/share/nginx/html #默认的nginx网站根目录
/var/log/nginx #nginx的日志文件所在目录
/var/log/nginx/error.log #错误日志
/var/log/nginx/access.log #访问日志
使用nginx:
systemctl disable firewalld --now #关闭防火墙
setenforce 0 #关闭selinux
ss -lntup #查看端口,是否与nginx所需的80端口冲突(httpd)
systemctl restart nginx #重启nginx服务
curl -I localhost #测试是否可以使用curl命令访问web服务器或者使用浏览器访问
四、测试样例:
实例1
搭建web服务器,访问该服务器时显示“hello world”欢迎界面
vim /usr/share/nginx/html/index.html #写入hello world
curl localhost #查看写入信息
curl 192.168.68.130 #作用同上
实例2
建立两个基于IP地址访问的网页,要求如下:
该网站的IP地址主机位为100,设置首页目录为/www/ip/100,网页内容为this is 100。
该网站的IP地址主机位为200,设置首页目录为/www/ip/200,网页内容为this is 200。
nmtui #添加IP地址192.168.68.100/24和192.168.68.200/24
nmcli conneciton up ens160 #重启网络
mkdir -pv /www/ip/{100,200} #创建所需的路径
echo this is 100 > /www/ip/100/index.html
echo this is 200 > /www/ip/200/index.html #定义网页内容
setenforce 0 #设置selinux
书写配置文件:
vim /etc/nginx/conf.d/test_ip.conf #新建配置文件,将一下信息写入
server{listen 192.168.68.100:80;root /www/ip/100;location / {} } server{listen 192.168.68.200:80;root /www/ip/200;location / {} }
systemctl restart nginx #重启服务
成功!
实例3
建立两个基于端口访问的网站,设置网站首页的地址为/www/port/80,设置网页内容为:the port id 80。建立一个使用10000端口的网站,设置网站首页目录为/www/port/10000,网页内容为the port id 10000
mkdir -pv /www/port/{80,10000}
echo this is 80 > /www/port/80/index.html
echo this is 10000 > /www/port/10000/index.html #定义网页内容
nmtui #添加IP地址192.168.68.80和192.168.68.110
vim /etc/nginx/conf.d/test_ip.conf #写入以下配置
server{listen 192.168.68.80:80;root /www/port/80;location / {} } server{listen 192.168.68.110:10000;root /www/port/10000;location / {} }
systemctl restart nginx #重启nginx程序
成功!
tree /www #用树的形式查看
实例4
使用自定义域名www.bzy_test.com打开网页192.168.68.100
主机中存放域名与IP地址关联的文件地址:C:\Windows\System32\drivers\etc、hosts
使用pycharm以管理员的身份打开,并写入192.168.68.100 www.bzy_test.com
测试成功!
五、搭建http静态网站
实例1
建立两个基于域名访问,要求如下:
新建一个网站,域名为www.ceshi.com,设置网站首页目录为/www/name,网页内容为this is test。
新建一个网站,域名为rhce.first.day,同时可以通过rhce.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
查看windows客户端本地缓存解析记录:ipconfig /displaydns
清除windows客户端本地缓存的DNS解析记录:ipconfig /flushdns
3、路由缓存:路由器也有DNS缓存
4、ISP的DNS服务器:ISP是互联网提供方的简称,ISP有专门的DNS服务器应对DNS查询请求。
5、根服务器:ISP的DNS服务器找不到的话,他会向根服务器发送请求,进行递归查询(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,以此类推)
实验步骤:
mkdir -pv /www/{name,ce} #创建目录文件
echo this is test > /www/name/index.html
echo today is first day of class > /www/ce/index.html #将网页内容写入index.html中vim /etc/nginx/conf.d/test_ip.conf #修改配置信息,写入以下信息
server{listen 192.168.68.130:80;server_name www.ceshi.comroot /www/name; } server{listen 192.168.68.130:80;root /www/ce;server_name rhce.first.day ce.first.day;location / {} }
vim /etc/hosts #添加域名与IP地址的对应,添加如下内容
192.168.68.130 localhost www.ceshi.com rhce.first.day ce.first.day
nginx -t #查看修改是否有问题
systemctl restart nginx #重启服务
curl www.ceshi.com #测试是否可用
实例2
基于虚拟目录和用户控制的web网站
yum install httpd-tools #下载httpd-tools包提供网页认证自动生成储存用户密码和用户名的文件
htpasswd -cb /etc/nginx/conf.d/auth-password user1 123 #创建用户
mkdir /www/real #新建文件目录作为实际访问的目录
echo real > /www/real/index.html #并写入实际访问的内容index.html
vim test_virtual.conf #编辑网页访问,写入以下内容:
server{listen 192.168.68.130:80;root /usr/share/nginx/index;location /real {alias /www/real;auth_basic on;auth_basic_user_file /etc/nginx/conf.d/atuo_password;} }
systemctl restart nginx #重启
curl 192.168.68.131/real/ #测试1
curl 192.168.68.131/real/ -u user1 #测试2
curl user1:123456@192.168.68.131/real #测试3
curl user1:123456@192.168.68.131/real/ #测试4
六、基于https协议的静态网站
相较于http协议,https在可靠传输(如TCP之上),建立了一个SSL协议(SSL记录协议——为高层协议提供数据封装、压缩、加密等基本功能,SSL握手协议——用于实际的数据传输开始之前,通讯双方进行身份认证、协商加密算法、交换加密密钥等)
https网站的搭建www.bzy_test_https.com:
#https功能是由ngx_http_ssl_module模块提供
#新建ip并重启
nmcli connection modify ens160 +ipv4.addresses 192.168.68.156/24
nmcli connection up ens160
#书写网站的首页文件
mkdir -pv /www/https/
echo https > /www/https/index.html
#找到证书和私钥
cd /etc/pki/tls/certs/ #证书存放路径
#.key是公钥文件,生成证书(自签名)的公私钥
openssl genrsa -out https.key
#crt是由证书颁发机构CA签名后的证书,或者是由开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
#写配置文件
vim /etc/nginx/conf.d/test_https.conf
server{listen 192.168.68.156:443 ssl;root /www/https;ssl_certificate /etc/pki/tls/certs/https.crt;ssl_certificate_key /etc/pki/tls/certs/https.key;location / {} }
systemctl restart nginx #重启服务
curl --insecure https://192.168.68.156 #测试连接
#修改服务器和主机的dns配置文件
#主机配置文件地址:"C:\Windows\System32\drivers\etc\hosts"
#服务器配置文件地址:"/etc/hosts"
192.168.68.156 www.bzy_test_https.com #加入IP地址与域名的对应关系
成功!