Nginx

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

其特点是占有内存少、并发能力强、稳定性高、丰富的功能集、示例配置文件和低系统资源的消耗而闻名,在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布。

反向代理

Nginx反向代理指的是,Nginx作为代理服务器,接收客户端的请求,然后将请求转发到后端的真实服务器上,并将后端服务器的响应返回给客户端。

其特点有以下几点:

  • 反向代理服务器可以缓存静态资源或动态页面,减少后端服务器的负载,提高响应速度。

  • 反向代理服务器可以作为SSL终端,接收HTTPS请求并进行SSL/TLS解密,然后将解密后的请求转发给后端服务器,提高安全性。

  • 反向代理服务器可以通过配置访问控制规则、限制请求频率等方式,防止恶意请求、DDoS攻击、SQL注入等,提高系统的安全性。

反向代理实例:

(1)解决跨域问题

A页面想获取B页面资源,如果A、B页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。

因为跨域问题只存在于浏览器上,服务器上是不存在跨域的。此时将A页面的请求在Nginx端代理到B页面,就可以解决跨域问题。

location / {
  proxy_pass http://B.com/;
}

(2)解决http资源访问

在https的页面中,是不允许访问http资源的。例如你要引入一个Js插件库,碰巧他只支持http访问,而你的页面又必须是https。这时就可以利用Nginx反向代理来解决:

location /A {
  proxy_pass https://A.com/;
}

(3)静态资源访问

在配置微信小程序安全域名时,需要将一个txt文件放到服务器,且能用需要配置的域名访问到。实例配置如下:

location /xBuDwAnw10.txt {
   root /opt/;
}

负载均衡

Nginx负载均衡可以理解为N台服务器平均分担负载,例如Web服务器、FTP服务器、其它关键任务服务器等,从而共同完成工作任务。当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。

Nginx负载均衡的优点有:

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

  2. 负载均衡配置通过Nginx中的upstream指令来实现,在该指令中能够配置负载均衡服务器组。

  3. 目前负载均衡有4种典型的配置方式,分别为轮询方式、权重方式、ip_hash方法,以及利用第三方模块的方式。

upstream backend {
    server A.com;
    server B.com;
}

Https

Nginx部署SSL证书,支持https访问,以Right-House官网举例:

server {
  listen 80;
  listen 443 ssl;
  server_name doc.right-house.love;
  root html;
  index index.html index.htm;
  ssl_certificate /ssl/doc.right-house.love.pem;  
  ssl_certificate_key /ssl/doc.right-house.love.key; 
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;
  location / {
    proxy_pass A.com/;
  }
  location /RH-doc-release{
	  proxy_pass A.com;
  }
}