Web基础

Web服务

Web介绍

web全称:World Wide Web,全球广域网,也称为万维网。

web项目分为如下架构:
C/S架构:全称客户端服务端架构,英文Client/Server。qq、微信、京东app、各种游戏app或者电脑游戏应用等等。服务端主要负责加
工处理数据,客户端主要用来展示数据。有些数据是存储在服务端的,比如商品信息,我们换个电脑查看,商品信息还在,有些数据是存
储在客户端的,比如聊天记录,我们换个电脑在登录qq,如果不做同步,就没有聊天记录了。

B/S架构:是C/s架构的一种,只是单独拿出来说,浏览器/服务端架构,英文Browser/Server,京东网站、淘宝网站等等,基于浏览器访问的网站都是B/S架构。这种架构的网站非常多,因为成本也比较便宜,不是每个公司都会开发自己的客户端程序,而且如果每个公司都
制作自己客户端程序,我们的手机或者电脑要安装很多的客户端,其实很难受,而浏览器就提供了一个统一的入口,我们只需要下载一个
浏览器软件,比如谷歌浏览器、火狐浏览器、360浏览器等等,只要打开一个标签页,输入一个网址就能访问一个网站,那么相当于我们
一个软件就访问了多个公司的网站,很方便,这就是统一入口的意思。

web发展了几个阶段:

web 1.0阶段:纯静态页面,不能交互,只是用来展示一些内容给大家看。客户端页面使用的HTML语言开发的。
web 2.0阶段:支持用户上传信息,交互,购物。服务端后台开发语言有:php、java、ruby、python等,刚开始使用后端开发语言就是
为了用它来生成动态页面的,比如一些动态数据的展示等。php、java是早先用的最多的。
web 3.0阶段:移动互联网,衣食住行,出门只带个手机就行。服务端后台开发语言有:php、java、ruby、python等

html介绍

1
2
HTML的英文全称是是 Hyper Text Markup Language,即超文本标记语言。
html语言写在html扩展名的文件中,index.html

css:排版布局,.css文件

js:特效,.js文件

超链接:网页跳转

flash展示特效,视频播放,小游戏,很多网站已经不支持flash,因为不安全的漏洞太多,现在基本都是html5来支持视频播放,小游戏。

Nginx

nginx配置文件(/etc/nginx)

Nginx站点根目录 /usr/share/nginx/html

1
grep -Ev '#|^$' nginx.conf.default > nginx.conf   清除nginx配置文件的‘#’行和空行

image-20250414182724021

1
2
3
4
5
listen    80;     Nginx,apche默认端口号80
如果更改了默认端口号需要在网址后面加上更改后的端口号才能正常访问

server_name 域名
root 站点根目录

http协议介绍

超文本传输协议

nginx日志

现在web服务器都必须要开启日志记录功能,而且记录必须超过半年,这是网络安全法规定的。https://www.wangan.com/wenda/6791
之前我们也看过日志,系统的安全日志,就是ssh登录的时候我们看的,如下

1
[root@web01 conf.d]# cat /var/log/secure

登录系统就会被记录

Web服务程序也是一样,每次有人请求我们,我们就把本次请求相关信息给记录下来,有了记录,那么如果服务器被网络攻击了,那么我
们就可以在日志中去分析是谁在什么时候攻击我们的,什么样的攻击,哪些成功了,哪些失败了。方便我们后面进行攻击溯源。

nginx默认已经帮我们记录了日志,在/var/log/nginx/目录下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@web01 conf.d]# ls /var/log/nginx/
access.log access.log-20250509.gz error.log error.log-20250509.gz
access.log-20250414.gz access.log-20250522 error.log-20250414.gz error.log-20250522
# 每个日志是会按照当天的日期进行切割

# 我们清空一下日志
[root@web01 nginx]# > access.log
[root@web01 nginx]# cat access.log

# 访问一下网站,再看日志
[root@web01 nginx]# cat access.1og
192.168.61.1 - - [12/Apr/2023:14:19:59 +0800] "GET/ HTTP/1.1" 304 0 "-" "Mozi11a/5.0 (Windows NT 10.0;Win64; x64) App1eWebkit/537.36 (KHTML, 1ike Gecko) Chrome/111.0.0.0 Safari/537.36"
# 304状态码表示客户端浏览器用的是浏览器缓存页面,所以看到后面是0,表示没有响应任何数据


access.log是记录访问记录的,error.log是记录错误信息的

1.错误日志

1
2
3
4
5
[root@webo1 nginx]# cat error.1og
2023/04/12 11:34:25 [error] 2342#2342:*1 open()"/web/one/favicon.icofai1ed (2:No such fi1eor directory),client:192.168.61.1,server:localhost,request:GET /favicon.ico HTTP/1.1",host:
"192.168.61.139", referrer:"http://192.168.61.139
#没有favicon.ico文件,可以切换到站点目录中去下载一个:wget https://www.mi.com/favicon.ico
#还有人故意访问一个错误的路径,让你的网站报错,显示出nginx的版本。

2.访问日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#定制日志记录格式:这个必须配置在在server配置外面昂
log_format compression '$remote_addr - $remote_user [stime_local]''
'"$request" Sstatus Sbytes_sent'
'"shttp_referer" "shttp_user_agent" "$gzip_ratio"';

#compression可以理解为是这个格式的名字,谁想用这个格式,谁就用这个名字来指定格式

192.168.142.1 - - [05/Jun/2025:14:32:50 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.142.130/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0"

192.168.61.1 - - [12/Apr/2023:14:19:59 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozi1la/5.0 (Windows NT 10.0;Win64; x64) ApplewebKit/537.36 (KHTML, 1ike Gecko) Chrome/111.0.0.0 safari/537.36"
# $remote_addr 客户端的ip地址
# $remote_user 客户端的用户名
# $time_local 当前时间
# $request 请求起始行
# $status http状态码(200表示请求正常,304表示本次请求使用的缓存)
# $bytes_sent 响应资源的大小
# $http_referer 记录资源的跳转地址
# $http_user_agent 用户的终端信息
# $gzip_ratiog zip的压缩级别

#比如我们想让日志记录一下时间、ip、请求uri、状态码、文件大小
# vim /etc/nginx/nginx.conf
worker_processes 1;
events{
worker_connections 1024;
}
http{
log_format test '[$time_local] Sremote_addr "Srequest" $status Sbytes_sent';
include mime.types;
default_type application/octet-stream;
charset utf-8;
include /etc/nginx/conf.d/*.conf;
}

#每个网站都可以单独记录自己的日志
[root@webo1 nginx]# cd conf.d/
[root@webo1 conf.d]# ls
a.jaden.com.conf.stop b.jaden.com.conf c.jaden.com.conf
[root@webo1 conf.d]# vim b.jaden.com.conf
server {
listen 80;
server_name b.jaden.com;
access_log /opt/nginx/b.jaden.com_log test;#test是上面指定的日志格式的名称,/opt/目录下面没有nginx目录,需要我们手动创建,这个目录是随意指定的,mkdir/opt/nginx,还要授权:chownnginx:nginx/opt/nginx,不然nginx用户没办法访问这个目录。
location / {
root /web/two;
index index.html index.html;
}
# 改完之后,重启nginx,然后访问网站,看一下/opt/nginx目录,看看日志格式

开启basic认证

有些网站会开启一个叫做basic认证的东西,basic认证叫做http基本认证,就是给我们的网站多一把锁,防止恶意访问,比如访问一些敏
感后台路径等操作。
比如我们搭建的那个游戏网站,我只想自己玩,不想让其他人玩,就可以加上个basic认证。
首先生成一个叫做htpasswd的账号密码文件,有很多在线网站就能生成,如下

image-20250605151930806

把生成的密码保存下来,比如保存到/etc/nginx/htpasswd文件中

1
2
vim /etc/nginx/htpasswd
# 写入刚才保存的用户和密码NIKTA:CQArTEgiT84So

然后修改一下nginx下的网站配置文件

1
2
auth_basic "NIKTA.com";#auth_basic表示开启这个功能,"NIKTA.com"是备注信息,随便写,一些老浏览器能看到,新浏览器都看不到备注信息了。
auth_basic_user_file /etc/nginx/htpasswd;# 这是账号密码存放在哪个位置

image-20250605154055220

ssl证书认证(https)

http协议访问的网站现在会显示不安全,因为数据默认是明文传输的。 https = http + ssl