文章目录
①没有没有做过 Nginx 支持 https 的访问,如何配置?
HTTP(超文本传输协议):是一个简单的【请求-响应】协议,指定了客户端可能发送给服务器什么样的消息,以及可以得到什么样的响应
HTTPS:
-
是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认身份认证保证了传输过程的安全性
-
HTTPS 是在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL
SSL(安全套接字协议):是为网络通信提供安全及数据完整性的一种安全协议,被广泛地用于 Web 浏览器与服务器之间的身份认证和加密数据传输
部署步骤如下:
1.需要SSL证书支持,这里我是使用阿里云的云盾SSL证书
2.重新编译,在【./configure】后加入【--with-http_ssl_module】 ,以支持ssl
3.修改Nginx配置,新增Server节点,监听443端口
4.将 http 重定向至 https
5.编辑完成后重启nginx生效
6.如果80端口被占用,可以结束进程后再次重启即可成功
②Nginx 前端页面/图片加载不出来,如何排查故障?
- 第一反应,是不是网络问题,查看网络连接,防火墙等
- 查看服务是否正常启动,端口是否被占用
- 检查配置文件,location查询路径书否正确,rewrite路径跳转是否正确,编辑完配置文件后是否重启服务
- 查看图片的格式是否匹配,配置文件中指定的默认首页目录下文件是否存在,内容是否正确
③Nginx、LVS、Haproxy 三者有何区别?(优缺点总结)
Nginx:
- 工作在网络 7 层之上,可针对 http 应用做一些分流的策略,如针对域名、目录结构,它的正则规则比 Haproxy 更为强大和灵活
- 对网络稳定性的依赖非常小,理论上能 ping 通就能进行负载功能
- 安装与配置比较简单,测试也比较方便
- 可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量,负载度方面相对而言比 LVS 弱
- Nginx 可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点
- 对后端服务器的健康检查,只支持通过端口检测,不支持 url 来检测
- 不仅仅是负载均衡/反向代理能力强,同时也是强大的 Web 应用服务器,LNMP 架构在高流量环境中稳定性很好
- 适应范围较小,仅能支持 http、https、Email 协议
LVS:
- 抗负载能力强、是工作在网络 4 层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,且对内存和 cpu 资源消耗也比较低
- 配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率
- 工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如【LVS+Keepalived】,不过我们在项目实施中用得最多的还是【LVS/DR+Keepalived】
- 应用范围比较广,因为 LVS 工作在 4 层,所以它几乎可以对所有应用做负载均衡,包括 http、数据库、在线聊天室等等
- 本身不支持正则表达式处理,不能做动静分离。而现在许多网站在这方面都有较强的需求,这个是【Nginx/HAProxy+Keepalived】的优势所在
- 如果是网站应用比较庞大的话,【LVS/DR+Keepalived】实施起来就比较复杂了,相对而言,【Nginx/HAProxy+Keepalived】就简单多了
Haproxy:
- Haproxy 的优点能够补充 Nginx 的一些缺点,比如支持 Session 的保持,Cookie 的引导。同时支持通过获取指定的 url 来检测后端服务器的状态
- HAProxy 跟 LVS 类似,本身就只是一款负载均衡软件,单纯从效率上来讲 Haproxy 会比 Nginx 有更出色的负载均衡速度,在高并发处理上也是优于 Nginx 的
- Haproxy 负载均衡策略非常多,有八种
④如何优化 Tomcat?
- 操作系统优化,即内核参数优化
- 配置文件参数优化
- Java 虚拟机,即 JVM 调优
⑤补充:对称密钥与非对称密钥有何区别?
SSH:
- SSH 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能
- SSH 协议对通信双方的数据进行了加密处理,其中包括用户登录时输入的用户口令,提供了更好的安全性
- 在使用 SSH 的过程中,数据传输时加密的,可以防止信息泄露,而且也是压缩的,可以提高传输速度
对称密钥:
-
加密和解密使用相同密钥的算法
-
速度快,可加密内容较大,用来加密会话过程中的消息,便于硬件实现和大规模生产
-
每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担
-
对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高
非对称密钥:(也称之为公开密钥或双密钥)
- 其原理是加密密钥与解密密钥不同,形成一个密钥对,用其中一个密钥加密的结果,可以用另一个密钥来解密
- 加密和解密使用不同的密钥,一个密钥公开,称公钥,一个密钥保密,称私钥