
Nginx的应用
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负载均衡的优点有:
负载均衡建立在现有网络结构之上,提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡配置通过Nginx中的upstream指令来实现,在该指令中能够配置负载均衡服务器组。
目前负载均衡有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;
}
}