7月16号问答
目录7月16号问答问题一:HTTP和HTTPS的区别以及使用的端口号问题二:HTTP处理请求的过程问题三:HTTP常见的状态码2XX 成功3XX 重定向4XX 客户端错误5XX 服务器错误问题四:正向代理和反向代理的区别正向代理正向代理的用途反向代理反向代理用途问题五:我有⼀套反向代理的服务器,如果某次访问报了502,想要⾃动转发其他服务器上,需要什么参数第一步:配置负载均衡第二步:配置错误处理问题六:设置用户下次登录必须修改密码(考察:用户管理等)问题七:如何使用户拥有sudo权限步骤一:切换到root用户下:步骤二:vim /etc/sudoers步骤三:强制保存退出
问题一:HTTP和HTTPS的区别以及使用的端口号
HTTP:默认端口号是80
HTTPS:默认端口号是443,通过SSL协议进行加密传输
问题二:HTTP处理请求的过程
DNS解析
TCP三次握手
发起HTTP请求
服务器响应HTTP请求
浏览器解析和渲染
TCP四次挥手
问题三:HTTP常见的状态码
2XX 成功
200 ok(请求成功)
204 no content (请求成功,但是没有结果返回)
3XX 重定向
301 move permanently (永久性重定向)
302 found (临时性重定向)
304 not modified (表示在客户端采用带条件的访问某资源时,服务端找到了资源,但是这个请求的条件不符合跟重定向无关)
307 temporary redirect (跟302一个意思)
4XX 客户端错误
400 bad request (请求报文存在语法错误)
401 unauthorized (需要认证(第一次返回)或者认证失败(第二次返回))
403 forbidden (请求被服务器拒绝了)
404 not found (服务器上无法找到请求的资源)
5XX 服务器错误
500 internal server error (服务端执行请求时发生了错误)
502 Bad Gateway (作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应)503 service unavailable (服务器正在超负载或者停机维护,无法处理请求)
问题四:正向代理和反向代理的区别
正向代理
在客户端部署代理服务器,代替客户端对外部网络发送和接收消息。客户端发送一个指定目标的请求给代理服务器,代理服务器再发送给目标服务器,目标服务器收到请求后,将响应的内容发送给代理服务器,代理服务器发给客户端。
在正向代理的过程中,代理服务器代替客户端向目标服务器发送请求,目标服务器不知道谁是真正的客户端,不知道访问自己的是一个代理服务器还是客户端。服务器只负责将响应包发送给请求方。
正向代理的用途
1、突破访问控制
例如:VPN
国内用户不能直接访问国外的网站,需要通过正向代理访问理服务器。
2、提高访问速度
代理服务器里有一个硬盘缓冲区,会将请求响应保存到缓冲区中。下次访问时会直接读取缓冲区中的数据返还给用户。
3、隐藏客户端真实的IP
反向代理
在服务器端部署代理服务器(为了区分,将真正响应的服务器成为业务服务器),让代理服务器替业务服务器接收请求或发送响应。客户端发送一个请求给代理服务器,代理服务器接收请求并将请求发送给业务服务器,业务服务器将响应发送给代理服务器,代理服务器再将响应发送给客户端。
在反向代理的过程中,客户端不知道自己请求的是代理服务器还是业务服务器。
反向代理用途
1、隐藏服务器真实IP
2、负载均衡
代理服务器可以将对业务服务器的请求根据预设算法分发到业务服务器上。
3、提高访问速度
对于静态页面的访问,代理服务器可以将数据存储到硬盘内,当出现有大量静态页面的访问时,可以直接从代理服务器获取响应。对于动态内容请求,代理服务器可以将缓存存在本地,提高访问响应速度。
4、提供安全障性
可以将代理服务器作为应用层的防火墙,拦截恶意的Web攻击。
问题五:我有⼀套反向代理的服务器,如果某次访问报了502,想要⾃动转发其他服务器上,需要什么参数
第一步:配置负载均衡
在Nginx中,使用负载均衡功能来将请求分散到多个后端服务器上。这可以通过upstream
块来定义一组服务器,并使用server
指令来指定每个服务器的地址和端口。例如:
upstream myapp1 {
server backend1.example.com weight=5;
server backend2.example.com;
server backend3.example.com down; # 假设这个服务器暂时不可用
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
# 其他proxy相关配置...
}
}
在这个例子中,如果backend1.example.com
或backend2.example.com
中的任何一个因为某些原因(如502错误)无法响应,Nginx将自动尝试将请求转发到另一个健康的服务器。
第二步:配置错误处理
虽然Nginx的负载均衡器默认会在后端服务器失败时尝试其他服务器,但您还可以配置特定的错误处理逻辑。例如,您可以定义一个error_page
指令来捕获502错误,并尝试将请求转发到一个特定的服务器或执行其他操作:
server {
listen 80;
location / {
proxy_pass http://myapp1;
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
error_page 502 = @fallback;
}
location @fallback {
proxy_pass http://fallback_server;
}
}
在这个配置中,如果后端服务器返回502错误,Nginx将自动将请求转发到fallback_server
指定的服务器上。
问题六:设置用户下次登录必须修改密码(考察:用户管理等)
第一步:使用chage
命令来设置密码的宽限期为0天,确保用户不会忽略密码更改的提示:
sudo chage -W 0 用户名
第二步:passwd
命令的-e
选项,将用户的密码设置为已过期
sudo passwd -e 用户名
问题七:如何使用户拥有sudo权限
步骤一:切换到root用户下:
su root
步骤二:vim /etc/sudoers
root ALL=(ALL) ALL, 在这行下面添加 xxx ALL=(ALL) ALL (xxx是用户),注意保持格式一致(我记得后面还有一个ALL)
步骤三:强制保存退出
:wq!