相关服务

iptables

1. 什么是 iptables,它的核心功能是什么?

  • iptables 是 Linux 内核中基于 Netfilter 框架的用户态工具,用于配置防火墙规则。

  • 核心功能

    • 数据包过滤(Packet Filtering)

    • 网络地址转换(NAT,包括 SNAT 和 DNAT)

    • 数据包修改(Mangling,如修改 TTL 或 TOS)

    • 连接跟踪(Connection Tracking)


2. iptables 的规则链有哪些?分别在什么场景下生效?

  • 5个默认链

    1. INPUT:处理发往本机的数据包

    2. OUTPUT:处理本机发出的数据包

    3. FORWARD:处理转发到其他网络接口的数据包

    4. PREROUTING:在路由决策前处理数据包(常用于 DNAT)

    5. POSTROUTING:在路由决策后处理数据包(常用于 SNAT)


3. 如何实现一个简单的端口转发规则?

  • 目标:将外部访问本机 80 端口的流量转发到内网服务器 192.168.1.100:8080。

  • 规则示例

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
    iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 8080 -j MASQUERADE

4. 什么是状态跟踪(Stateful Inspection)?如何在 iptables 中使用?

  • 定义: 状态跟踪是防火墙根据连接状态(如 NEW、ESTABLISHED、RELATED)动态调整规则的机制。

  • 内置状态

    • NEW:新连接(如 TCP 三次握手)

    • ESTABLISHED:已建立的连接

    • RELATED:与已存在连接相关的连接(如 FTP 数据连接)

  • 规则示例

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

5. 如何保存和恢复 iptables 规则?

  • 保存规则

    iptables-save

    命令导出规则:

    iptables-save > /etc/iptables/rules.v4
  • 恢复规则

    iptables-restore

    命令加载规则:

    iptables-restore < /etc/iptables/rules.v4

TOMCAT

1、请描述一下tomcat的工作过程?

1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的coyote HTTP/1.1 Connector获得。
​
2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
​
3、 Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host
​
4、 Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为locathost的Host获得请求/test/indeX.jsp, 匹配它所拥有的所有的context。 Host匹配到路径为/test的context
​
5、 path=“/test”的context获得请求/index.jsp, 在它的mapping table中寻找出对应的Servlet容器。 Context匹配到URL PATTERN为*jsp的servlet,对应于JspServlet类。
​
6、构造HtpServletRequest对象和HttpServletResponse对象,作为参数调用Jspservlet的doGet(或dopost()执行业务逻辑、数据存储等程序。
​
7、Context把执行完之后的HttpServletResponse对象返回给Host。
​
8、Host把HttpservletResponse对象返回给Engine。
​
9、 Engine把HttpServletResponse对象返回Connector。
​
10、 Connector把把HttpservletResponse对象返回给客户Browser。

2、tomcat的工作模式有哪些?

tomcat的运行模式有3种:

BIO模式: 阻塞式I/O操作,表示Tomcat使用的是传统Java I/O操作(即:java.io包及其子包);Tomcat 7以下版本默认情况下是以BIO模式运行的,由于每个请求的都要创建一个线程来处理,因此 线程的开销较大,不能处理高兵的场景,在三种模式中性能也最低效
​
NIO/2模式: 是Java SE 1.4以后续版本提供的一种新的I/O操作方式(即:java.nio包及其子包);是一个基于 缓存区、并提供非阻塞I/O操作的Java API,它拥有比传统的I/O操作(BIO)更好的并发运行性能;
​
APR模式: 简单理解就是,从操作系统级别解决异步IO问题,大幅度的提高服务器的处理合相应性能,也是Tomcat运行高并发应用的首选模式;

3、请解释如何在Tomcat中配置虚拟主机。

在Tomcat中配置虚拟主机需要在server.xml文件中添加Host元素。其中,name属性指定虚拟主机的域名或IP地址;appBase属性指定虚拟主机的Web应用程序部署目录;unpackWARs属性指定是否自动解压WAR文件;autoDeploy属性指定是否自动部署WAR文件。在Context元素中可以配置每个虚拟主机的Web应用程序。

4、请描述Tomcat中Session超时的概念,并解释如何配置Session超时时间

<session-config>
    <session-timeout>30</session-timeout> <!-- 30分钟超时时间 -->
</session-config>

5、请描述如何调优Tomcat性能,并提供一些建议。

调优Tomcat性能可以从多个方面入手,包括调整线程池大小、启用压缩、优化JVM参数等。首先,可以根据实际需求调整线程池的大小,避免线程过多或过少导致的性能问题;其次,可以启用HTTP内容的压缩,减少网络传输的数据量,提高传输效率;最后,可以优化JVM参数,例如调整堆大小、开启垃圾回收日志等,以提高Tomcat的性能和稳定性。此外,还可以通过定期清理Tomcat的临时目录、禁用不必要的日志记录等方式来优化性能。 一些优化示例如下:

调整线程池大小: 在Tomcat的配置文件(如server.xml)中,可以找到连接器(Connector)元素,用于配置线程池的大小。例如,以下示例将线程池的最大连接数设置为200:

<Connector port="8080" protocol="HTTP/1.1"  
           connectionTimeout="20000"  
           redirectPort="8443"  
           maxThreads="200"
           compression="on"   打开压缩功能
           compressionMinSize="2048"
           minSpareThreads="50" 
           enableLookups="false" 
           disableUploadTimeout="true" 
           acceptCount="300" 
           maxKeepAliveRequests="100"
           noCompressionUserAgents="gozilla,traviata" 
           compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"        
           />

maxThreads属性指定了线程池的最大连接数。可以根据实际需求调整该值。

优化JVM参数:

调整堆大小 以通过-Xms和-Xmx参数来设置JVM的初始堆大小和最大堆大小

java -Xms512m -Xmx1g -jar myapp.jar

Tomcat的缺省端口是多少,怎么修改?

Tomcat 的缺省端口是 8080。要修改该端口,请按照以下步骤操作:

打开 Tomcat 安装目录中的 conf 文件夹。

找到并打开 server.xml 文件。

找到以下行:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

将 port 属性的值修改为您想要的端口号,例如:

<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

保存文件并重启 Tomcat。这样,Tomcat 将在新端口上运行

简述Tomcat有几种部署应用方式?

Tomcat 的部署方式主要有以下几种:

WAR 文件部署:

将 Web 应用打包为 WAR 文件,直接放入 webapps 目录,Tomcat 自动解压和部署。

解压目录部署:

将 WAR 文件解压到 webapps 目录,Tomcat 直接使用解压后的目录作为应用。

使用管理界面部署:

通过 Tomcat 的管理界面(如 manager 应用)上传和部署应用。

Tomcat有哪几种Connector运行模式?

Tomcat 的 Connector 运行模式有:

Blocking (阻塞模式):每个请求使用一个线程,处理时被阻塞。

Non-blocking (非阻塞模式):使用 NIO,允许一个线程处理多个请求。

APR (Apache Portable Runtime):高性能异步 I/O,适合高并发。

HTTP/2:支持 HTTP/2 协议,提高性能和降低延迟。

Tomcat中使用的连接器是什么?

Tomcat 中使用的连接器主要有以下几种:

HTTP Connector:

处理 HTTP 请求,支持多种工作模式(如阻塞和非阻塞)。

AJP Connector:

用于与其他 Web 服务器(如 Apache HTTP Server)通信,支持 AJP(Apache JServ Protocol)。

HTTPS Connector:

处理 HTTPS 请求,提供安全的加密连接。

JMX Connector:

用于监控和管理 Tomcat 实例,支持通过 JMX 进行远程管理。


Ansible
简述Ansible中如何保存敏感数据?

在ansible内容中保留秘密数据并仍然公开共享,那么可以在playbooks中使用Vault。Ansible Vault,它包含在Ansible中,可以加密和解密Ansible使用的任何结构化数据文件。

简述Ansible Inventory?

Ansible中受管主机列在主机清单(inventory)文本文件中,清单还将这些系统组织成group,以便更容易地进行批量管理。一个Inventory定义了Ansible将管理的主机集合。这些主机还可以分配至组,可以对组进行批量管理。组可以包含子组,主机可以是多个组的成员。Inventory根据类型可分为静态清单和动态清单:

静态主机Inventory可以由文本文件定义。

动态主机Inventory可以由脚本或其他程序根据需要使用外部信息提供者生成。

简述Ansible ad-hoc和playbook的区别?

Ad-Hoc 命令可以作为一次性命令对一组目标主机运行单个、简单的任务。

Ad-Hoc 不适合复杂配置管理或编配场景,Ad-Hoc 一次只能调用一个模块和一组参数。当需要多个操作时,必须使用多个 Ad-Hoc 来执行。

playbook可以实现以一种简易重复的方式对一组目标主机运行多个复杂的任务。

Playbook 是描述要在受管主机上实施的必要配置或程序性步骤的文件。

Playbook 为配置管理和部署提供了强大而灵活的解决方案。

Playbook 可以将冗长而复杂的管理任务转变为可轻松重复的历程,并且可预测成果然而。

playbook 是一个文本文件,其中包含一个或多个按顺序运行的play的列表。

playbook中,可以将playbook中的tasks保存为人类可读且可立即运行的形式。

play 是一组有序的任务,应该对从目录中选择的主机运行。

简述Ansible ad-hoc命令?

Ad-Hoc命令是一种快速执行单个Ansible任务的方法,适合于不需要永久保存该任务,临时执行的场景。Ad-Hoc是简单的控制台操作,无需编写剧本就可以运行。它们对于快速测试和更改非常有用。

1、Ansible是什么?

Ansible是一个自动化运维工具,基于Python开发,集合了众多运维工具的优点,可以实现批量系统配置、批量程序部署、批量运行命令等功能。并且它是基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块,而ansible只是提供一种框架。

2、Ansible常用模块(至少6个)?

command ping yum copy service shell file replace user group

ping # 主机连通性测试

command # 在远程主机上执行命令,不支持管道

shell # 在远程主机上调用shell解析器,支持管道命令个

copy # 用于将文件复制到远程主机,支持设定内容和修改权限.

file # 创建文件,创建连接文件,删除文件等

fetch # 从远程复制文件到本地

cron # 管理cron计划任务

yum # 用于模块的安装

service # 管理服务

user # 管理用户账号

group # 用户组管理

script # 将本地的脚本在远端服务器运行

setup # 该模块主要用于收集信息,是通过调用facts组件来实现的,以变量形式存储主机上的信息

3、描述Ansible是如何工作的?

Ansible由节点和控制机器组成。 控制机器是安装Ansibles的地方,节点由这些机器通过SSH管理。 借助SSH协议,控制机器可以部署临时存储在远程节点上的模块。

控制机器使用ansible或者ansible-playbooks在服务器终端输入的Ansible命令集或者playbook后,Ansible会遵循预先编排的规则将PLAYbook逐条拆解为Play,再将Play组织成Ansible可以识别的任务tasks,随后调用任务涉及到的所有MODULES及PLUGINS,根据主机清单INVENTORY中定义的主机列表通过SSH协议将任务集以临时文件或者命令的形式传输到远程节点并返回结果,如果是临时文件则执行完毕后自动删除。

4、说明什么是HA集群中SLA及企业常见的衡量指标?

SLA 服务水平协定,企业中常见的有

999 表示最大停机时间 17h31m

9999 表示最大停机时间 43m

99999 表示最大停机时间 52m

5、常见的硬件和软件负载均衡产品有哪些?

硬件:F5,A10,Array

软件:LVS,Nginx,Haproxy

1、场景1:服务器中病毒

上家公司刚入职不久 业务部门反馈打开官网跳转到了赌博网站,领导没有给我官网服务器权限呢。然后我给领导要了seesion过来登陆上排查问题

1)看了下服务器是跑的Nginx 到Nginx配置文件中看location的匹配规则或者rewrite跳转 发现正常
​
2)到代码目录使用grep -R www.dubo.com . 发现好多页面都有这个链接
​
3)知道了问题 立刻恢复业务 通过定时任务找到了备份脚本 发现之前做过代码备份 定时备份到了/bakup/web/code,进入到code目录下 找最近的一次备份解压 然后过滤看是否有赌博链接 发现是正常的
​
4)把有问题的代码移动到/tmp下 方便查找原因 把备份的代码解压到代码目录下 访问网站恢复正常

检查原因:

1)检查目录权限发现有777权限(问了下领导 是否有需求配置777 领导没有这方面需求 上个运维搞的)

把目录权限修改为755 文件权限644
​
find ./ -type d|xargs chmod 755
​
find ./ -type f|xargs chmod 644

2)把所有的代码文件做MD5认证 只要代码被修改 直接邮件通知

第二天早上就收到了邮件报警 某些文件被修改了 手机看了下网页发现被篡改了,到公司登陆服务器检查代码
​
在过滤发现代码正常 去查看Nginx配置文件被修改 感觉系统中毒,然后上传病毒扫描工具 Nessus /Clamav
​
扫描到了很多后门 bash漏洞 webshell 一句话木马 图片中也存在一些赌博网站链接,官网访问量不大,建议领导迁移

2、场景2:服务器无法登录

早上到公司发现无法连接阿里云服务器但是网络正常。问了下其他同事发现所有人无法连接阿里云服务器 连接不上但是通过阿里云后台web页面可以连接服务器

1)阿里云提交工单 不久收到了回复 你好xxx 阿里云一切正常 请检查你的网络端口IP等信息 实例id
2)登录阿里云后台看安全组是否放行了我们公司的IP地址 发现正常
3)后台登陆服务器查看iptables是否正常 看着也放行了我们公司的IP
4)在公司ping服务器地址 端口也正常没被修改过 发现能ping通服务器 就是连不上
5)使用抓包工具进行抓包
  a.阿里云服务器 tcpdump -i eth0 port 12345
  b.在公司自己笔记本上执行 telnet 服务器IP地址 12345 ,发现过来的ip地址不是自己公司的公网IP地址 不是自己公司的会被防火墙禁止,才知道我们公司的公网IP地址被运营商做了二次NAT转换
​
解决:
1)安全组和iptables防火墙放行新的公网IP地址解决
2)联系公司网络运营商,不要给我们公司做NAT二次转换 我们是互联网公司需要连接服务器的

3、系统是CentOS6 迁移到 CentOS7过程?

1)在阿里云买了一台centos7 centos6那台配置也比较低了 1核2G的 1核心4G 搭建LNMP环境
2)centos6 数据备份代码 配置文件备份 数据库(动态数据 停止数据库写入)文件拷贝到centos7
3)数据库导入新的库 站点目录及nginx配置文件导入和源服务器一模一样的
4)网站测试 更改windows的本地hosts解析到新站点进行测试 测试没问题
5)更改阿里云的DNS解析到新的服务器

4、在Linux中启动一个进程的方式有哪些?

(1)手工启动
用户在输入端发出命令,直接启动一个进程的启动方式。可以分为:
  ①前台启动:直接在SHELL中输入命令进行启动。
  ②后台启动:启动一个目前并不紧急的进程,如打印进程。
(2)调度启动
系统管理员根据系统资源和进程占用资源的情况,事先进行调度安排,指定任务运行的时间和场合,到时候系统会自动完成该任务。经常使用的进程调度命令为:at、crontab。

5、请解释一下/etc/fstab中每一列的含义

(1)第一列:将被加载的文件系统名;
(2)第二列:该文件系统的安装点;
(3)第三列:文件系统的类型;
(4)第四列:设置参数;
(5)第五列:供备份程序确定上次备份距现在的天数;
(6)第六列:在系统引导时检测文件系统的顺序。


1、说一下LVS/HAproxy/nginx区别?

(1)LVS基于Linux操作系统实现软负载均衡,而Haproxy和Nginx是基于第三方应用实现的软负载均衡
​
(2)LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而Haproxy和Nginx都可以实现4层和7层技术,Haproxy可提供TCP和Http应用的负载均衡综合解决方案
​
(3)LVS因为工作在ISO模型的第四层,其状态监测功能单一,而Haproxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态监测方式
​
(4)Haproxy功能强大,但整体性能低于4层模式的LVS负载均衡
​
(5)Nginx主要用于web服务器或缓存服务器

2、说一下Haproxy应用场景?

支持HTTP反向代理
​
支持动态程序的反向代理
​
支持基于数据库的反向代理

3、说一下Haproxy的全局配置参数有哪些?(至少能说5个以上)

chroot                   # 锁定运行目录
deamon                   # 以守护进程运行
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin    # socket文件
user, group, uid, gid     # 运行haproxy的用户身份
nbproc                    # 开启的haproxy进程数,与CPU保持一致
nbthread                  # 指定每个haproxy进程开启的线程数,默认为每个进程一个线程
cpu-map 1 0               # 绑定haproxy 进程至指定CPU,主要针对多核心CPU设置(进程:核心数)
#cpu-map 1 0
#cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
maxconn                   # 每个haproxy进程的最大并发连接数
maxsslconn                # 每个haproxy进程ssl最大连接数,用于haproxy配置了证书的场景下
maxconnrate               # 每个进程每秒创建的最大连接数量
spread-checks             # 后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间
pidfile                   # 指定pid文件路径
log 127.0.0.1 local3 info    # 定义全局的syslog服务器;最多可以定义两个

4、简述 HAProxy 常见的负载均衡策略?

HAProxy 负载均衡策略非常多,常见的有如下 9 种:

roundrobin:表示简单的轮询。
static-rr:表示根据权重。
leastconn:表示最少连接者先处理。
source:表示根据请求的源 IP,类似 Nginx 的 IP_hash 机制。
first: 表示当第一个服务器的负载打满后,新的请求才会转发到第二台服务器
uri:表示根据请求的 URI。
url_param:表示根据 HTTP 请求头来锁定每一次 HTTP 请求。
rdp-cookie(name):表示根据据 cookie(name)来锁定并哈希每一次 TCP 请求。

5、简述负载均衡四层和七层的区别?

四层负载均衡器也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;
​
七层负载均衡器也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如 HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。


LVS

LVS的常用调度策略有哪些?(先理解,再记忆)

轮询调度(Round Robin, rr):
原理:按照轮询的方式依次将请求分发给后端服务器。
特点:简单且均衡,适用于服务器性能相近的情况。
​
最少连接(Least Connections, lc):
原理:动态地将请求分发到当前连接数最少的服务器上。
特点:考虑了服务器的当前负载,有助于提高系统整体吞吐量。
​
加权轮询(Weighted Round Robin, wrr):
原理:轮询的基础上增加了权重,权重越高的服务器接收的请求越多。
特点:可以根据服务器性能进行灵活配置,使性能较高的服务器承担更多负载。
​
加权最少连接(Weighted Least Connections, wlc):
原理:在最少连接的基础上考虑了服务器权重,权重越高的服务器在连接数相同时被选中的概率越高。
特点:结合了最少连接和加权轮询的特点,更加灵活和高效。
​
基于局部性的最少连接(Locality-Based Least Connections, lblc):
原理:针对请求的目标IP地址进行哈希,然后将请求转发到具有相同目标IP地址且连接数最少的服务器。
特点:适用于具有大量重复请求或缓存的场景,可以减少跨服务器请求的开销。
​
带复制的基于局部性的最少连接(Locality-Based Least Connections with Replication, lblcr):
原理:与lblc类似,但在没有足够的最少连接服务器时,会将请求转发到具有相同目标IP地址的其他服务器上。
特点:提高了系统的可扩展性和容错能力。
​
目标地址哈希(Destination Hashing, dh):
原理:根据请求的目标IP地址进行哈希,然后将请求转发到具有相同哈希值的服务器上。
特点:可以实现请求的静态分配,减少跨服务器通信的开销。
​
源地址哈希(Source Hashing, sh):
原理:根据请求的源IP地址进行哈希,然后将请求转发到具有相同哈希值的服务器上。
特点:适用于具有会话保持需求的场景,如Web应用中的用户会话。

请简述LVS是什么,并列举其主要特点。

1. 高性能:LVS通过高效的负载均衡算法和调度器,能够将客户端请求分发到多个后端服务器上,从而充分利用服务器资源,提高整体性能。
2. 高可用性:LVS支持多种负载均衡策略,如轮询、随机、加权轮询等,可以根据实际需求选择合适的策略,确保服务的高可用性。此外,LVS还支持故障检测和恢复机制,能够在后端服务器出现故障时自动将其从集群中剔除,并将请求转发到其他健康服务器上。
3. 可伸缩性:LVS可以轻松地扩展到多个服务器上,通过增加后端服务器的数量来应对不断增加的访问量。这种可伸缩性使得LVS能够适应各种规模的网络应用。
4. 易配置性:LVS的配置相对简单,用户可以使用ipvsadm工具来设置LVS模型、调度方式以及指定后端主机。此外,LVS还支持多种配置方式,如命令行、配置文件等,方便用户进行管理和维护。

LVS 的核心组件包括哪些?它们的作用是什么?

LVS 的核心组件主要包括:

ipvs(IP Virtual Server):运行于 Linux 内核中,负责实现负载均衡功能。提供转发规则和调度算法,将流量分发到后端服务器。

ipvsadm(IP Virtual Server Administration):用户空间的管理工具,用于配置和管理 ipvs。通过命令行添加、删除、修改 LVS 的转发规则。

LVS 的三种工作模式是什么?

NAT 模式(Network Address Translation):

LVS 将客户端请求转发到后端服务器,同时需要将后端服务器的响应包再转发给客户端。

优点:部署简单,无需修改后端服务器。

缺点:LVS 成为瓶颈,性能较低。

DR 模式(Direct Routing):

LVS 只负责转发请求,后端服务器直接将响应返回给客户端。

优点:性能高,适合大规模场景。

缺点:要求后端服务器与 LVS 在同一物理网络。

TUN 模式(IP Tunneling):

LVS 将请求通过隧道转发给后端服务器,后端服务器通过隧道直接返回响应。

优点:支持跨网络部署。

缺点:需要配置隧道,部署较复杂。

HAProxy在不影响现有连接的情况下,如何重新加载配置

使用haproxy的-sf(finished) 参数,可以方便重启了:

haproxy -f configfile -sf 
haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

你近期使用过的Nginx的版本?

生产环境使用Stable version:最新稳定版

注意各版本的区别:Nginx官网提供了三个类型的版本

1、Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版

2、Stable version:最新稳定版,生产环境上建议使用的版本

3、Legacy versions:遗留的老版本的稳定版

为什么要做动、静分离?

在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理 的(如:css、html、jpg、js等等),这些不需要经过后台处理的文件称为静态文件,否则动态文件。因此 我们后台处理忽略静态文件,但是如果直接忽略静态文件的话,后台的请求次数就明显增多了。在我们对资源 的响应速度有要求的时候,应该使用这种动静分离的策略去解决动、静分离将网站静态资源(HTML, JavaScript,CSS等)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里将 静态资源放到nginx中,动态资源转发到tomcat服务器中,毕竟Tomcat的优势是处理动态请求

怀疑一块网卡有问题的时候,如何检测?

将其安装在一台能正常上网的机器上,看其指示灯是否闪烁,正常接入状态下指示灯应为红色或者绿色,然后用ping命令检测是否能ping通网络上的主机,若通则正常,若网卡驱动安装无误而ping命令不通,则可以断定网卡坏掉。

简述贵公司的PV、UV、IP,流量等资源大小?

日访问量10万,小时点击量4000-5000,最高QPS 500左右,UV量是2-3万,IP量为5万左右

Nginx、HAproxy有什么区别?工作中你怎么选择?

LVS: 是基于四层的转发

HAproxy: 是基于四层和七层的转发,是专业的代理服务器

Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

区别:

LVS由于是基于四层的转发所以只能做端口的转发

而基于URL的、基于目录的这种转发LVS就做不了

工作选择:

HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做

在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大

选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器

配置简单,所以中小型企业推荐使用HAproxy

网站HTTPS证书认证需要那几个文件?分别是什么?什么作用?

HTTPS证书需要有两个文件,一个是crt,一个是key。crt文件就是公钥文件,用来加密的。而key文件是私钥文件,是用来解密的。

分布式与集群的区别 ?

集群
集群是指在几个服务器上部署相同的应用程序来分担客户端的请求。它是同一个系统部署在不同的服务器上,比如一个登陆系统部署在不同的服务器上。集群主要的使用场景是为了分担请求的压力。但是,当压力进一步增大的时候,可能在需要存储的部分,比如mysql无法面对大量的“写压力”。因为在mysql做成集群之后,主要的写压力还是在master的机器上,其他slave机器无法分担写压力,这时,就引出了“分布式”。
​
分布式
分布式是指多个系统协同合作完成一个特定任务的系统。它是不同的系统部署在不同的服务器上,服务器之间相互调用。好比 多个人一起做不同的事。分布式是解决中心化管理的问题,把所有的任务叠加到一个节点处理,太慢了。所以把一个大问题拆分为多个小问题,并分别解决,最终协同合作。分布式的主要工作是分解任务,把职能拆解。分布式的主要应用场景是单台机器已经无法满足这种性能的要求,必须要融合多个节点,并且节点之间的相关部分是有交互的。相当于在写mysql的时候,每个节点存储部分数据(分库分表),这就是分布式存储的由来。存储一些非结构化数据:静态文件、图片、pdf、小视频 ... 这些也是分布式文件系统的由来

简述一下目前代码发布方式

蓝绿部署(Blue-green Deployments)

蓝绿部署的目的是减少发布时的中断时间、能够快速撤回发布。

蓝绿部署中,一共有两套系统:一套是正在提供服务系统,标记为“绿色”;另一套是准备发布的系统,标记为“蓝色”。两套系统都是功能完善的,并且正在运行的系统,只是系统版本和对外服务情况不同。
最初,没有任何系统,没有蓝绿之分。
然后,第一套系统开发完成,直接上线,这个过程只有一个系统,也没有蓝绿之分。后来,开发了新版本,要用新版本替换线上的旧版本,在线上的系统之外搭建了一个使用新版本代码的全新系统。 这时候,一共有两套系统在运行,正在对外提供服务的老系统是绿色系统,新部署的系统是蓝色系统

金丝雀发布(canary release)也叫灰度发布。

金丝雀部署就是先把新版本试水的一部分就叫金丝雀发布。金丝雀发布可以快速而有效地发现软件新版本存在的问题。
它的原理就是部署的时候让一小部分用户先试用功能 ,通过日志监控或者服务器监控,看下新用户的反馈。如果没有严重问题,尽快部署这个新版本,否则快速会退。小代价去试错

A/B测试(A/B Testing

A/B测试是效果测试,同一时间有多个版本的服务对外服务,这些服务都是经过足够测试,达到了上线标准的服务,有差异但是没有新旧之分(它们上线时可能采用了蓝绿部署的方式)。
A/B测试关注的是不同版本的服务的实际效果,譬如说转化率、订单情况等。A/B测试时,线上同时运行多个版本的服务,这些服务通常会有一些体验上的差异,譬如说页面样式、颜色、操作流程不同。相关人员通过分析各个版本服务的实际效果,选出效果最好的版本

存储类型有哪些

1、直连式存储:Direct-Attached Storage,简称DAS
2、网络附加存储:Network-Attached Storage,简称NAS
3、存储区域网络:Storage Area Network,简称SAN

HTTP1.1相比HTTP1.0的优势

1、持久化连接
通过设置 Connection:keep-alive 来实现持久化连接(长连接),即多个请求和响应可以利用同一个 TCP 连接,而不是每一次请求响应都要新建一个TCP连接,这样一来就完美的解决了HTTP1.0中需要频繁的和服务端建立TCP握手的过程,节省了大量的TCP分配和回收的性能的损耗,提高了系统的性能。
2、分块传输(chunk)
在 HTTP/1.1 版本中,可以不必等待数据完全处理完毕再返回,服务器产生部分数据,那么就发送部分数据,此种方式更加优秀一些,可以节省很多等待时间。
3、错误提示
HTTP/1.1 引入了一个 Warning 头域,增加对错误或警告信息的描述,此外,在HTTP/1.1 中新增了24个状态响应码(100,101,203,205,206,301,305… )。
4、带宽优化
HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。
5、增加 host 字段
使得一个服务器能够用来创建多个 Web 站点
6、缓存处理
HTTP1.1`还加入了缓存处理的字段、如`cache-control
7、增加管道机制(Pipelining模型)
管道化使得请求能够“并行”传输。而‘响应’依旧是一个一个返回。并没有真正意义上的解决队头阻塞问题, 但是,当出现队头阻塞时,浏览器会建立多个TCP连接;在http1.1,一个域上,一个页面最多可以发送6个HTTP的请求,只有这6个HTTP请求被复用后才能发送下一轮的请求。

1、RHEL与CentOS的区别?

1.Centos是的克隆版本,是把redhat的源代码拿来编译然然后发行的发行版本。但是 基本的命令和使用方法是一样。
2.centos是免费的版本,不向用户提供任何的服务,用户在使用工程中出现的各种问题,Centos是不负责任的。而redhat对某些服务是提供收费的,在所提供的服务中出现问题。redhat是负责解决的。
3.CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RedHat那样需要花钱购买支持服务!也就是说redhat的服务是需要收费的,而Centos是完全免费的。

2、通配符 * ? [n-m] {n,m}分别表示什么意思?

*:表示匹配所有的文件或者目录或者内容
?:表示匹配一个任意字符
[n-m]:表示n到m连续的数字或者字母等
{n,m}:表示只有n和m

3、基于域名的虚拟主机和基于IP的虚拟主机有什么区别?

虚拟主机用于在单个 apache/nginx 实例上托管多个域。可以为服务器拥有的每个 IP 设置一个虚拟主机,或者相同的 IP 但不同的端口,或者相同的 IP、相同的端口但不同的域名。后者称为“基于域名的虚拟主机”。
​
在基于 IP 的虚拟主机上,我们可以在同一台服务器机器上运行多个网站,但每个网站都有自己的 IP 地址,而在基于域名的虚拟主机中,我们在同一个 IP 地址上托管多个网站。但要成功,您必须在 DNS 数据库中为您的 IP 地址放置多个 DNS 记录

4、集群的分类?

HA:高可用集群(High Availability Cluster):此类集群实现的功能是保障用户的应用程序持久、不间断地提供服务。
​
LBC:负载均衡集群/负载均衡系统(Load Balance Cluster):高可用集群不同的是,负载均衡集群中,所有的后端节点都处于活动动态,它们都对外提供服务,分摊系统的工作负载。
​
HPC:科学计算集群(High Performance Computing Cluster)/高性能计算(High Performance Computing)集群。这类集群致力于提供单个计算机所不能提供的强大计算能力,包括数值计算和数据处理,并且倾向于追求综合性能

5、假如我是一个系统管理员,有一个用户最近不守规矩,我想暂时将他的账号停掉,让他最近无法操作任何动作,等到将来一段时间过后再使用他的账号,怎么做 才比较好 ?

将/etc/passswd的shell字段写成/sbin/nologin,即可让该账号暂时无法登入主机;
在/etc/shadow内密码字段的最前面添加一个*号,这样该账号也无法登入;
将/etc/shadow的第八个字段关于账号取消日期的那个项设为小于当前日期的数字,他就无法登入系统了

6、请你说一说用户态和内核态区别

用户态和内核态是操作系统的两种运行级别,两者最大的区别就是特权级不同。用户态拥有最低的特权级,内核态拥有较高的特权级。运行在用户态的程序不能直接访问操作系统内核数据结构和程序。内核态和用户态之间的转换方式主要包括:系统调用,异常和中断

7、请你说一说有了进程,为什么还要有线程?

1、线程产生的原因:
进程可以使多个程序能并发执行,以提高资源的利用率和系统的吞吐量;但是其具有一些缺点:
进程在同一时间只能干一件事,进程在执行的过程中如果阻塞,整个进程就会挂起,即使进程中有些工作不依赖于等待的资源,仍然不会执行。
​
2、和进程相比,线程的优势如下:
从资源上来讲,线程是一种非常"节俭"的多任务操作方式。在linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。从切换效率上来讲,运行于一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换所需时间也远远小于进程间切换所需要的时间。据统计,一个进程的开销大约是一个线程开销的30倍左右。
从通信机制上来讲,线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过进程间通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进城下的线程之间贡献数据空间,所以一个线程的数据可以直接为其他线程所用,这不仅快捷,而且方便。


你是如何理解VRRP协议的,为什么使用VRRP?

主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,通信就会失效,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议。

VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信

什么是脑裂?

在高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。两个节点上的HA软件像“裂脑人”一样,争抢“共享资源”、争起“应用服务”,就会发生严重后果。共享资源被瓜分、两边“服务”都起不来了;或者两边“服务”都起来了,但同时读写“共享存储”,导致数据损坏

如何解决keepalived脑裂问题?

在实际生产环境中,我们从以下方面防止脑裂:

  • 同时使用串行电缆和以太网电缆连接、同时使用两条心跳线路,这样一条线路断了,另外一条还是好的,依然能传送心跳消息

  • 当检查脑裂时强行关闭一个心跳节点(这个功能需要特殊设备支持,如stonith、fence)相当于备节点接收不到心跳消息,通过单独的线路发送关机命令关闭主节点的电源

  • 做好对脑裂的监控报警

解决常见方案:

  • 如果开启防火墙,一定要让心跳消息通过,一般通过允许IP段的形式解决

  • 可以拉一条以太网网线或者串口线作为主被节点心跳线路的冗余

  • 开发检测程序通过监控软件检测脑裂

负载均衡有哪些实现方式

硬件负载

HTTP重定向负载均衡

DNS负载均衡

反向代理负载均衡

IP层负载均衡

数据链路层负载均衡

nginx的模块化架构是怎样的?

Nginx 模块分为以下几种类型:

核心模块 (Core Modules): 提供基础功能和配置指令,如事件驱动机制和内存管理。

事件模块 (Event Modules): 处理事件驱动机制,如 epoll、kqueue 等,用于高并发连接处理。

阶段处理模块 (Phase Handler Modules): 处理 HTTP 请求的各个阶段,包括访问控制、重写、过滤等。

协议模块 (Protocol Modules): 支持不同协议,如 HTTP、HTTPS、Mail 等。

过滤模块 (Filter Modules): 修改或过滤 HTTP 响应内容,如 gzip 压缩、chunked 传输编码等。

上游模块 (Upstream Modules): 处理反向代理和负载均衡,将请求转发给后端服务器。

负载均衡模块 (Load Balancer Modules): 提供多种负载均衡策略,如轮询、最少连接、IP哈希等。

Nginx如何处理长连接和短连接

Nginx 处理长连接和短连接的方式主要通过 HTTP 协议的连接管理机制来实现。以下是关于 Nginx 如何处理长连接和短连接的详细说明:

  • 短连接(短时间连接)

短连接是一种在完成一次请求-响应之后立即关闭连接的连接方式。这通常用于简单的请求,尤其是在 HTTP/1.0 协议中。Nginx 处理短连接的方式如下:

接受请求:Nginx 接收到客户端的请求。

处理请求:Nginx 处理请求并生成响应。

发送响应:Nginx 将响应发送回客户端。

关闭连接:在发送完响应之后,Nginx 关闭连接。

在短连接模式下,每次请求和响应都需要建立和关闭一个 TCP 连接,这会带来一定的开销,特别是在高并发环境中。

  • 长连接(Keep-Alive 连接)

长连接(或称为 Keep-Alive 连接)允许一个 TCP 连接在多个请求和响应之间保持打开状态,从而减少连接的建立和关闭带来的开销。Nginx 处理长连接的方式如下:

接受请求:Nginx 接收到客户端的请求。

处理请求:Nginx 处理请求并生成响应。

发送响应:Nginx 将响应发送回客户端,并在响应头中包含 Connection: keep-alive。

保持连接:Nginx 保持连接打开状态,以便后续的请求能够复用该连接。

处理后续请求:客户端可以在同一连接上发送后续请求,Nginx 继续处理这些请求并返回响应。

关闭连接:如果连接超过了配置的超时时间(keepalive_timeout),或者客户端发送了 Connection: close 请求头,Nginx 将关闭连接。

Nginx的调度算法有哪些

轮询(默认):按顺序逐个将请求分配给后端服务器。

权重:根据指定的权重分配请求。

IP哈希:根据客户端IP地址的哈希值分配请求。

最少连接:将请求分配给当前活动连接最少的后端服务器。

Fair:更加后端服务器的响应时间来分配请求

Nginx的keepalive指令有什么作用

减少连接开销:通过保持与后端服务器的持久连接,避免频繁建立和关闭连接所带来的开销。

提高性能:在高并发场景下,可以显著提高服务器的响应速度和吞吐量。

优化资源使用:更好地利用系统资源,减少CPU和内存的消耗。

nginx如何实现四层负载?

Nginx的四层静态负载均衡需要启用ngx_stream_core_module模块
​
默认情况下,ngx_stream_core_module是没有启用的,需要在安装Nginx时,添加--with-stream配置

fastcgi和cgi的区别

cgi:
​
web 服务器会根据请求的内容,然后会 fork 一个新进程来运行外部 c 程序(或 perl 脚本…), 这个进程会把处理完的数据返回给 web 服务器,最后 web 服务器把内容发送给用户,刚才 fork 的进程也随之退出。如果下次用户还请求改动态脚本,那么 web 服务器又再次 fork 一个新进程,周而复始的进行。
​
fastcgi
​
web 服务器收到一个请求时,他不会重新 fork 一个进程(因为这个进程在 web 服务器启动时就开启了,而且不会退出),web 服务器直接把内容传递给这个进程(进程间通信,但 fastcgi 使用了别的方式,tcp 方式通信),这个进程收到请求后进行处理,把结果返回给 web 服务器,最后自己接着等待下一个请求的到来,而不是退出。

nginx怎么实现后端服务的健康检查

方式一,利用 nginx 自带模块 ngx_http_proxy_module 和 ngx_http_upstream_module 对后端节点做健康检查。
​
方式二,利用 nginx_upstream_check_module 模块对后端节点做健康检查。(推荐此方法)

top交互命令使用

h 显示top交互命令帮助信息
c 切换显示命令名称和完整命令行
m 以内存使用率排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中
o或者O 改变显示项目的顺序

什么是交换空间?

交换空间是Linux使用的一定空间,用于临时保存一些并发运行的程序。当RAM没有足够的内存来容纳正在执行的所有程序时,就会发生这种情况

无人值守安装系统流程

1.  Client客户端通过PXE网卡向dhcp发送IP地址分配请求,DHCP检验Client请求是否合法(主要检测Client网卡的MAC地址)如果请求合法则从DCHP池分配IP地址响应Client,同时将启动文件pxelinux.0文件所在的TFTP服务IP地址一并返回给Client
2.  Client通过得到IP地址向TFTP服务发送获取pxelinux.0 文件的请求,TFTP服务器响应给pxelinux.0 文件大小,试探Client是否满意接收;当TFTP接收到Client同意接收该pxelinux.0 文件的请求之后,正式向Client发送pxelinux.0文件
3.  Client接收到TFTP发来的pxelinux.0文件,利用该文件启动引导(相当于boot loaber 的第一阶段)
4.  启动成功后,Client向TFTP服务器发送获取对于本机的配置文件pxelinux.cfg,收到CLient确认接收,TFTP服务器将启动菜单配置文件发回Client
5.  Client读取TFTP发来配置文件pxelinux.cfg (相当于boot loaber的第二阶段选择菜单)
6.  Client根据启动菜单配置文件里的信息,向TFTP发送Linux内核和initrd文件请求信息,TFTP接收到消息之后将内核和initrd文件发送给Client
7.  Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
8.  Client启动Linux内核,加载相关的内核参数
9.  Client通过内核参数下载kickstart文件,并根据kickstart文件里的安装信息,下载安装源文件进行自动化安装
10.  进入安装画面,此时可以通过选择HTTP、FTP和NFS方式之一进行安装。

什么是代理?什么是反向代理和正向代理?

代理是计算机网络中的一个中间角色,充当客户端和服务器之间的“中介”,代替双方完成通信。它就像一位“信使”,接收请求后转发给目标,再将响应返回给发起方。其核心逻辑是:请求方不直接访问目标,而是通过代理间接完成交互

正向代理(Forward Proxy) 客户端主动配置的代理服务器,用于代替客户端向目标服务器发起请求。客户端明确知晓代理的存在,并主动将请求发送给代理。

反向代理(Reverse Proxy) 部署在服务器端,代替真实服务器接收客户端请求,并根据规则转发到后端服务器。客户端无感知,认为直接访问目标服务器。

如何在 Nginx 中实现服务器端的安全性管理?

隐藏版本号

配置 SSL/TLS 加密,确保数据传输的安全。

禁⽤不必要的 HTTP ⽅法,例如 PUT 和 DELETE,避免恶意攻击。

配置防⽕墙,限制⽹络访问。

定期备份服务器数据,以防⽌数据丢失或遭到破坏。

使⽤限制连接速率和限制请求频率的模块,以避免恶意攻击和拒绝服务攻击。

对于敏感数据的保护,使⽤合适的身份验证和授权策略。

安装和更新服务器软件,以及及时修补安全漏洞,以避免遭受攻击和破坏。

如何在 Nginx 中实现服务器端的资源管理和优化?

开启 gzip 压缩:可以使⽤ gzip 压缩来减⼩传输数据的⼤⼩,从⽽提⾼⽹络传输的速度。

静态⽂件缓存:可以使⽤ Nginx 的缓存功能来缓存静态⽂件,减少⽂件的读取和传输次数,提⾼访问速度。

带宽限制:可以设置 Nginx 的带宽限制,限制每个请求的带宽使⽤,从⽽防⽌某些请求过度占⽤带宽,导致其他请求变慢。

负载均衡:可以使⽤ Nginx 的负载均衡功能,将请求分发到多个服务器上,从⽽减轻单个服务器的压⼒,提⾼整个系统的处理能⼒。

301和302 重定向的区别是什么?

301和302是HTTP状态码中的两种重定向状态,它们的主要区别在于重定向的永久性和临时性。

具体来说,301表示永久性重定向,即原始URL已经不存在,搜索引擎将把权重转移到重定向后的URL上,⽽302表示临时性重定向,即原始URL仍然存在,搜索引擎会保留权重并继续爬取原始URL。因此,如果您想要完全替换原始URL,可以使⽤301重定向,如果只是暂时移动内容或者更改了⼀些服务器配置,则应该使⽤302重定向。

Nginx Rewrite Flags标志有哪些?

在 Nginx 中,rewrite 指令可以⽤来重写 URL,它的语法如下:rewrite regex replacement [flag];

其中,regex 表示匹配的正则表达式,replacement 表示替换的内容,flag 表示重写规则的标志,它可以是下⾯这些选项之⼀或多个组合:

last:表示执⾏完当前规则后,重新开始处理 URI,继续匹配其他规则;

break:表示停⽌匹配其他规则,不再处理 URI;

redirect:表示执⾏重定向,返回 302 状态码;

permanent:表示执⾏永久重定向,返回 301 状态码;

1、说一下location的匹配优先级顺序?

(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
​
^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
​
正则表达式类型(~和~*)的优先级次之。
​
常规字符串匹配类型(不带任何修饰符的匹配),按前缀匹配。/test
​
通用匹配(/),如果没有其它匹配,任何请求都会匹配到。

2、如何调整Nginx的工作进程数以优化性能?

Nginx的工作进程数(worker_processes)通常应设置为与服务器CPU核心数相同,以充分利用多核CPU的优势。可以通过查看系统的CPU核心数来确定最佳值,例如使用命令grep processor /proc/cpuinfo | wc -l。调整worker_processes参数可以优化Nginx的并发处理能力。

3、Nginx中如何通过配置来优化静态文件的缓存?

可以通过在Nginx配置文件中为静态文件设置适当的expires和cache-control头来优化缓存。例如,对于常见的静态资源如图片、CSS和JavaScript文件

4、session和cookie的区别和联系

联系

用户向服务器发送用户名和密码用于登陆系统。 服务器验证通过后,服务器为用户创建一个 Session,并将 Session信息存储 起来。服务器向用户返回一个 SessionID,写入用户的 Cookie。 当用户保持登录状态时,Cookie将与每个后续请求一起被发送出去。 服务器可以将存储在 Cookie 上的 Session ID 与存储在内存中或者数据库中的Session 信息进行比较,以验证用户的身份,返回给用户客户端响应信息的时候会附带用户当前的状态

区别

1、存放位置不同:

cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、安全程度不同:

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

3、性能使用程度不同:

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

4、数据存储大小不同:

单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。


1、解释一下PV,UV,TPS,QPS的含义

QPS

Queries Per Second,每秒查询数。每秒能够响应的查询次数。

TPS

Transactions Per Second 的缩写,每秒处理的事务数目。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数

PV

Page View 即页面浏览量。用户户每一次对网站中的每个页面访问均被记录 1 次。用户对同一页面的多次刷新,访问量累计。

UV

访问数(Unique Visitor)指独立访客访问数,统计 1 天内访问某站点的用户数 (以cookie 为依据),一台电脑终端为一个访客。

2、 Nginx架构的特点

1)高可靠:稳定性 master进程 管理调度请求分发到哪—个worker->worker进程

2)热部署: (1) 平滑升级 (2)可以快速加载配置

3)高并发:可以同时响应更多的请求

4)响应快:尤其在处理静态文件上,响应速度很快

5)低消耗:cpu和内存 1W个请求 内存2-3MB

6)分布式支持:反向代理 七层负载均衡

3、在安装linux操作系统时一般如何进行分区Swap分区起什么作用,该分区的大小一般如何设定?

在安装linux操作系统时至少需要划分2个基本分区:根分区,交换分区。Swap分区用于和内存交换正在运行程序的数据,相当于windows中的虚拟内存,它的大小一般取物理内存的2倍4、简述常用的加强linux系统安全的方法

A:设置BIOS密码

B:设置用户强登录口令

C:加强root用户的安全

D:删除多余的默认账号

E:加强配置文件的安全

F:加强启动脚本的安全

4、当用户在浏览器当中输入一个网站,说说计算机对dns解释结果哪些流程?注:本机跟本地DNS还没有缓存

1.用户输入网址到浏览器;

2.浏览器发出DNS请求信息;

3.计算机首先查询本机HOST文件,不存在,继续下一步;

4.计算机按照本地DNS的顺序,向区域dns服务器查询IP结果;区域dns服务器查询不到时会从根域开

始,按照DNS层次结构向下搜索,直至对于信息具有权威性;

5.将返回dns结果给本地dns和本机,本机和本地dns并缓存本结果,直到TTL过期,才再次查询此结果;

6.返回IP结果给浏览器;并给本地的DNS一份结果;

7.浏览器根据IP信息,获取页面;

5、nginx和php结合的工作方式

1、用户通过http协议发起请求,请求会先抵达LNMP架构中的Nginx

2.Nginx根据用户的请求进行判断,该判断由Location进行完成(静态请求走本地,动态请求交给后端)。

3.判断用户请求为静态页面,Nginx直接进行处理。

4.判断用户请求的是动态页面,Nginx会将该请求交给fastcgi协议进行下发

5.fastcgi协议将请求提交给php-fpm管理进程,php-fpm管理进程接收到后会调用PHP解析器进程。

6.由php解析器进行解析PHP脚本信息

7.若请求中设计查询数据库的操作,则由php连接数据库(用户名 密码),然后发起查询操作

8.最终将解析结果返还给用户

1、使用“反向代理服务器”的优点是什么?

反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于

安全方面来说是很好的,特别是当您使用web托管服务时

2、请解释ngx_http_upstream_module的作用是什么

ngx_http_upstream_module 用于定义可通过 fastcgi 传递、 proxy 传递、 uwsgi 传递、 memcached传递和scgi传递指令来引用的服务器组。

3、请解释什么是C10K问题

C10K 问题是指无法同时处理大量客户端(10,000)的网络套接字。

4、请陈述stub_status和sub_filter指令的作用是什么

Stub_status 指令:该指令用于了解 Nginx 当前状态的当前状态,如当前的活动连接,接受和处理当前读/写/等待连接的总数

5、用Nginx服务器解释-s的目的是什么

用于运行 Nginx -s 参数的可执行文件。

6、为什么Nginx性能这么高?

因为他的事件处理机制:异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决

7、Nginx虚拟主机怎么配置?

1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站

2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台

3、基于ip的虚拟主机

1、Nginx 是什么?

Nginx是⼀款⾼性能的Web服务器和反向代理服务器,也可以作为负载均衡器、邮件代理服务器和HTTP缓存服务器使⽤。

2、Nginx 与 Apache 有什么不同?

Nginx与Apache的不同点有:

处理并发请求的能⼒:Nginx使⽤异步事件驱动的⽅式处理请求,Apache使⽤基于线程的⽅式。Nginx能够处理更多的并发请求⽽且性能更⾼。

配置⽂件的语法:Nginx的配置⽂件采⽤了模块化的设计⽅式,配置⽂件语法简洁明了,易于理解和维护。

处理静态⽂件的能⼒:Nginx对于静态⽂件的处理效率更⾼,能够在⾼并发的情况下更快地响应请求。

模块化的设计:Nginx的模块化设计使得⽤户能够⾃由地选择需要的功能模块进⾏安装和配置。

3、Nginx 如何进⾏反向代理?

反向代理是Nginx的⼀个核⼼功能。可以通过在Nginx的配置⽂件中设置proxy_pass指令,将请求转发到其他的服务器进⾏处理。例如,可以将Web应⽤的请求转发到Tomcat服务器上进⾏处理。

4、使用“反向代理服务器”的优点是什么?

反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和 web 服务器之间的中间层。这对于安全方面来说是很好的,特别是当您使用 web 托管服务时。

5、请列举 Nginx 服务器的最佳用途。

Nginx 服务器的最佳用法是在网络上部署动态 HTTP 内容,使用 SCGI、WSGI 应用程序服务器、用于脚本的 FastCGI 处理程序。它还可以作为负载均衡器。

6、请解释 Nginx 服务器上的 Master 和 Worker 进程分别是什么?

Master 进程:读取及评估配置和维持

Worker 进程:处理请求


相关服务
http://121.43.34.139:8090//archives/xiang-guan-fu-wu
作者
学习记录
发布于
2025年04月16日
许可协议