Nginx、Apache、tomcat简介及安全加固

Nginx介绍

一、Nginx是什么?

        Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

        ​ Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 ​

        Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,000 个并发连接数。 ​ Nginx支持热部署,启动简单,可以做到7*24不间断运行。几个月都不需要重新启动。

二、Nginx的反向代理(扩展:正向代理)

在这里,用通俗易懂的方式解释一下:

        正向代理: 我们平时需要访问国外的浏览器是不是很慢,比如我们要看推特,看GitHub等等。我们直接用国内的服务器无法访问国外的服务器,或者是访问很慢。所以我们需要在本地搭建一个服务器来帮助我们去访问。那这种就是正向代理。(浏览器中配置代理服务器)

        反向代理: 那什么是反向代理呢。比如:我们访问淘宝的时候,淘宝内部肯定不是只有一台服务器,它的内部有很多台服务器,那我们进行访问的时候,因为服务器中间session不共享,那我们是不是在服务器之间访问需要频繁登录,那这个时候淘宝搭建一个过渡服务器,对我们是没有任何影响的,我们是登录一次,但是访问所有,这种情况就是 反向代理。对我们来说,客户端对代理是无感知的,客户端不需要任何配置就可以访问,我们只需要把请求发送给反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器的地址。(在服务器中配置代理服务器)

三、Nginx的负载均衡
什么是负载均衡?

        负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

        负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键 任务服务器等,从而共同完成工作任务。

        简单来说就是:现有的请求使服务器压力太大无法承受,所有我们需要搭建一个服务器集群,去分担原先一个服务器所承受的压力,那现在我们有ABCD等等多台服务器,我们需要把请求分给这些服务器,但是服务器可能大小也有自己的不同,所以怎么分?如何分配更好?又是一个问题。

Nginx给出来三种关于负载均衡的方式:
轮询法(默认方法):

        每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。

weight权重模式(加权轮询):

        指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大

ip_hash:

        上述方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。 ​ 我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

四、Nginx的动静分离!

        Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式 目前,通过使用Nginx大大提高了网站的响应速度,优化了用户体验,让网站的健壮性更上一层

安全加固

使用并配置https

在nginx 配置文件新增如下截图配置

        特别注意,要 使用高版本的 TLS 协议(如 TLS1.2 、 TLS1.3 ),替换低版本协议,因为低版本的加密算法强度不足。

校验http host 头

        有的时候服务端使用请求头中host 字段获取站点或者ip, 但服务端没有host header 值进行处理,可能造成恶意代码的传入,所以一般要你校验host头部 。nginx 配置如下:

关闭不安全的http 方法

        服务端开启了如 OPTIONS 、 HEAD 等不安全的 HTTP 方法,存在被非法利用、未

授权访问的风险。所以要关闭此类接口

校验referer

        未校验referer值,可能导致跨站点伪造。可以防盗链,其实nginx的secure_link也可以防止盗链,需要在nginx 中新增

定义网络白名单

Apache介绍

一、Apache服务简介

        Apache是一种网站服务程序,所谓网站服务程序,就是作为服务端,处理其他用户客户端发起的http或者https的请求,并给予响应的程序。目前,能够作为网站服务器的程序除了Apache之外还有Nginx、IIS等。 ​ 其中,IIS是微软推出的,专门用于windows平台的网站服务程序。Apache和Nginx则是Linux和Windows平台都可以使用。我们常说的LAMP和LNMP架构,其中的A和N就是指的Apache和Nginx。Apache和Nginx相对比,Apache代码量大,算法复杂,属于重量级服务器;Nginx则属于轻量级服务器,代码量少,相对不稳定。

Apache服务是网站搭建时常用的软件,因此我们必须详细的了解其配置文件等的位置,具体如下:

1、服务目录

        /etc/httpd目录下存放了httpd服务的一些配置文件,如下所示:

其中,/etc/httpd/conf/httpd.conf是Apache服务的主配置文件。

2、站点主目录

/var/www/html是Apache服务的站点主默认目录,里面存放了网页文件。

3、日志目录

Apache有四个日志,分别是/var/log/httpd/access_log访问日志,/var/log/messages消息日志和/var/log/secure安全日志和/var/log/httpd/error_log错误日志。

二、Apache配置文件参数详解

接下来,为了更好的对Apache服务器进行配置,我们来简单介绍一下Apache的服务主配置文件中各项参数。 在Apache主配置文件中,存在全局配置和区域配置两部分,全局配置是在配置文件里面的配置,而局部配置时在配置文件中,在类似xml格式括号内部的配置。全局配置通常定义Apache服务的整体参数,而局部配置通常定义某个目录的权限等局部参数。 Apache服务主配置文件的常用参数及含义如下:

1、ServerRoot

指定Apache的服务目录,默认是/etc/httpd。

2、User

指定运行Apache服务的用户,如果Apache服务使用YUM的方式安装,则默认是apache,并且在安装时,已经创建了系统用户apache,如果采用的是源码安装,则需要手动创建相应系统用户。

3、Group

指定运行Apache服务的组,遇User参数类似。

4、ServerName

指定Apache服务的域名,默认是www.example.com,我们可以手动修改为网站的域名。

5、DocumentRoot

指定网站的根目录。

6、Listen

指定Apache服务的监听端口。

7、DirectoryIndex

指定默认的索引页面,在该参数后面可配置多个文件,Apache服务会依次查找,直到找到相关文件。如果没有找到,则YUM方式安装的apache服务会显示测试页面,即本文封面图片,如果apache是采用源码方式安装的,则会显示404错误页面。

8、TimeOut

指定网站超时时间,默认300秒。

安全加固

        选择漏洞较少的apache版本,并打上安全补丁

        查看apache版本号:httpd -v

        然后在sebug上搜索该版本号有什么漏洞,可根据提示提升版本或者打上补丁

        关闭一些不使用的模块及功能

        可在LoadModule前加#,来注释掉一些不使用的模块

        删除默认网站及页面

        删除默认的页面,防止泄露服务器信息

        可修改banner信息

        配置httpd.conf禁止目录浏览

        配置httpd.conf设置默认文档

        合理配置apache的运行账户

        为apache单独建立一个运行账户及账户组,并在httpd.conf配置

        合理控制apache运行账户对磁盘的写入,执行权限 取消apache运行账户对网站目录的写入权限,上传目录除外,其他非网站目录尽量不给权限

        合理控制apache运行账户对sh等的执行权限 取消掉了运行账户对sh等的执行权限后能够防止webshell通过默认的sh执行命令

        配置httpd.conf取消对上传目录的php执行权限

        配置httpd.conf限制禁止访问的文件夹,例如后台目录

        配置httpd.conf限制一些特殊目录的特定ip访问,如内部接口等。

        配置httpd.conf限制一些文件类型的访问,如txt的日志

        配置httpd.conf修改修改监听端口来防止一些内部系统被扫描

        这样可以防止一些直接扫描80端口的黑客

        关闭对.htaccess的支持

        配置httpd.conf记录访问日志

        禁用非法 HTTP 方法

        限制请求的大小

        启用Apache日志

Tomcat介绍

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。

Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器。在中小型系统和并发访问用户不是很多的场合下被普遍应用,是开发和调试jsp程序的首选。

tomcat和nginx、Apache、(httpd)、Lighttpd等web服务器一样,具有处理html页面的功能,另外他还是一个servlet和jsp容器,独立的servlet容器是tomcat的默认模式。不过tomcat处理静态html的能力不如nginx/Apache服务器。

目前Tomcat最新版本为10.0。Java容器还有resin、weblogic等。

使用方案

方案一: Tomcat //单独使用 ----基本不用

方案二: Nginx+Tomcat //反向代理和负载均衡

方案三:

建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序

方案三中后端Tomcat可以运行在单独的主机,也可以是同一台主机上的多实例

主目录介绍
Webapps介绍

tomcat配置介绍

Tomcat性能优化

上策:优化代码

该项需要开发经验足够丰富,对开发人员要求较高

中策:jvm**优化机制** 垃圾回收机制 把不需要的内存回收

优化jvm--优化垃圾回收策略

优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码

下策:加足够大的内存

该项的资金投入较大

下下策:每天0点定时重启tomcat**

使用较为广泛

Tomcat安全优化

1、telnet管理端口保护(强制)
2、 ajp连接端口保护(推荐)
3、降权启动(强制)

  • 14
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值