专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

前端应该懂得Nginx反向代理和正向代理

ins518 2024-10-07 13:33:08 技术文章 8 ℃ 0 评论

今天就直接来说一下主题吧,前端要了解一些运维的Nginx用法,内容不多,简单看看就好,这两个功能在工作当中就够用了。

什么是反向代理与负载均衡

什么是反向代理

当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问集群

这个时候,我们通过第三方服务器访问服务器集群的内容,但是我们并不知道是哪一台服务器提供的内容,此种代理方式称为反向代理

什么是负载均衡

其实这个有很官方的说法,我这里就按照自己的理解去说。

简单一句话概括就是:用户可以选择相应的均衡策略,来分担服务器的压力,比如轮询、权重、连接数等等。具体的策略实现方式,网上都有,大伙可以自行查阅。

Nginx反向代理与负载均衡的实现

用户访问网站的时候首先会访问nginx服务器,然后nginx服务器再从服务器集群中选择压力较小的服务器,将该访问请求引向该服务器。

nginx配置

下面修改配置方面我就从mac系统下来进行简单的演示,如何安装的话也暂以mac为主了,windows系统直接去Nginx官网下载安装即可。

安装nginx
 1-进到homebrew官网,然后复制命令,预安装需要的东西
 2-brew install nginx 安装nginx
 3-nginx -v 显示版本号
进入nginx
 cd /usr/local/etc/nginx

下图为进入nginx文件夹下的文件内容

当进到这个目录下,我们就可以操作nginx了,接下来就列举一些非常非常有用的命令,多敲几遍,一定要记住。

nginx常用命令

启动nginx:nginx或者sudo nginx。如果nginx监听的是80端口,需要加sudo

关闭nginx:nginx -s stop

重启nginx:nginx -s reload或者sudo nginx -s reload。跟启动命令相同

检查配置:nginx -t

proxy_pass

nginx反向代理主要通过proxy_pass来配置,将你项目的开发机地址填写到proxy_pass后面,正常的格式为proxy_pass URL即可。

server {
 listen 80;
 location / {
 proxy_pass http://127.0.0.1:8080;
 }
}

upstream模块实现负载均衡

  • ip_hash指令
  • server指令
  • upstream指令及相关变量

上面写的三个指令,我们直接通过代码来一一分析

// 修改nginx.conf
worker_processes 1;
events {
 worker_connections 1024;
}
http {
 upstream firstdemo {
 server 39.106.145.33;
 server 47.93.6.93;
 }
 server {
 listen 8080;
 location / {
 proxy_pass http://firstdemo;
 }
 }
}

这里对专业名词做个解释:

  • worker_processes:工作进程数,和CPU核数相同
  • worker_connections: 每个进程允许的最大连接数
  • upstream模块: 负载均衡就靠它 语法格式:upstream name {} 里面写的两个server分别对应着不同的服务器
  • server模块: 实现反向代理。 listen监督端口号,location / {}访问根路径,proxy_pass http://firstdemo,代理到firstdemo里两个服务器上
  • 注意:每次修改完nginx配置文件之后记得重启。

    什么是正向代理

    正向代理:局域网中的客户端不能直接访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。Nginx本身只支持http的正向代理,并通过ngx_http_proxy_connect_module模块支持http、https的正向代理;

    反向代理:如果局域网向Internet提供资源服务,让Internet上的其他客户端来访问局域网内不的资源,使它们必须通过一个代理服务器来进行访问内部资源,这种服务就称为反向代理;Nginx通过proxy模块实现反向代理功能。

    这是两个比较通俗的解释,下面我们直接上配置:

    server { 
     resolver 114.114.114.114; #指定DNS服务器IP地址 
     listen 80; 
     location / { 
     proxy_pass http://$http_host$request_uri; #设定代理服务器的协议和地址 
     proxy_set_header HOST $http_host;
     proxy_buffers 256 4k;
     proxy_max_temp_file_size 0k; 
     proxy_connect_timeout 30;
     proxy_send_timeout 60;
     proxy_read_timeout 60;
     proxy_next_upstream error timeout invalid_header http_502;
     } 
    } 
    server { 
     resolver 114.114.114.114; #指定DNS服务器IP地址 
     listen 443; 
     location / { 
     proxy_pass https://$host$request_uri; #设定代理服务器的协议和地址 
     proxy_buffers 256 4k;
     proxy_max_temp_file_size 0k; 
     proxy_connect_timeout 30;
     proxy_send_timeout 60;
     proxy_read_timeout 60;
     proxy_next_upstream error timeout invalid_header http_502;
     } 
    }

    总结

    本篇文章主要介绍了Nginx比较基础的两个功能,正向代理和反向代理,平时我们在公司用的比较多的应该是反向代理,正向代理一般用于我们要跟第三方联调时,服务端要主动调用第三方接口的情况。学会了这两种配置方法基本能满足我们日常的开发需求,当然nginx的强大肯定不止于此,更多的功能需要大伙自己去学习了。

    Tags:

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    最近发表
    标签列表