背景
前几天在学习负载均衡的时候,接触到了Nginx反向代理的概念。其实年初我就写过一篇关于Nginx反向实例的笔记。今天翻看的时候发现写得很草率,当时的编辑并不满意。作为一个处于尴尬后期的人,我索性删除并重新整理了这篇文章......
【1】概念解释
代理人实际上是一个中间人。 A和B可以直接连接,中间插入一个C。 C是中介。
一开始,大多数代理都是用来帮助内部网络访问外部网络的(比如HTTP代理),从内到外。
这里的“反向”一词实际上是指代理服务器接受相反方向的连接请求,然后将请求转发给内网的服务器;并将从服务器获得的结果返回给请求连接的客户端。这时候客户端对于外界来说就表现为服务器。当代理服务器可以代理外部网络上的主机并访问内部网络时,这种代理服务方式称为反向代理服务。
知乎用户解释图
在正向代理中,Proxy和Proxy属于同一个LAN,并且pair是透明的;在反向代理中,Proxy和Proxy属于同一个LAN,并且Pair是透明的。其实Proxy在这两种代理中所做的都是代表自己发送和接收请求和响应,但是从结构上来看,左右是互换的,所以后来出现的代理方式被称为反向代理。
图像
正向代理隐藏真实的客户端,反向代理隐藏真实的服务器。正向代理,代理对象是客户端;反向代理,代理对象是服务器。
[2] 反向代理的应用/优点
现在许多大型网站都使用反向代理。除了防止外网对内网服务器的恶意攻击、缓存减轻服务器压力以及访问安全控制之外,还可以进行负载均衡,将用户请求分发到多台服务器上。
(1).解决网站服务器对外可见的问题; (2)。节省有限的IP地址资源。企业中的所有网站共享一个注册的IP地址。这些服务器被分配私有地址并使用虚拟主机。对外提供服务; (3)。保护真实的网络服务器。 Web 服务器对外界是不可见的。外网只能看到反向代理服务器,但反向代理服务器上没有真实数据。因此,Web服务器的安全性得到了保证。资源安全; (4)。加快了网站的访问速度,减轻了网络服务器的负担。反向代理具有缓存网页的功能。如果用户需要的内容在缓存中,可以直接从代理服务获取,减轻了Web服务器的负担。减轻了服务器的负载,加快了用户访问速度。 (5)。可实施安全过滤、流量控制、DDOS防御等一系列策略
[3]反向代理的实现
上面的潜台词是:用户直接与负载均衡设备通信,这也意味着用户在进行服务器域名解析时,解析得到的IP实际上是负载均衡的IP,而不是负载均衡设备的IP服务器。这样做的一个好处是,当新成员加入/移动服务器时,只需修改负载均衡的服务器列表,而不会影响现有服务。 (来自:知乎)
[4] Nginx反向代理操作1). nginx反向代理参考配置代码
#设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream Mos{
server 192.168.1.106:80 weight=3;
server 192.168.1.143:80 weight=1;
#server localhost:80 weight=1; #本机
}
server {
listen 80;
server_name localhost;
index index.html index.htm index.php;
root /mnt/web/hyicnoa;
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php?s=/$1 last;
}
proxy_pass http://Mos ; #在这里设置一个代理,和upstream的名字一样
}
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ \.php$
{
proxy_pass http://192.168.1.106; #此处限制访问 php 文件时,跳转到192.168.1.106 服务器解析
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
}
2)。尖端
以上配置文件内容仅供参考。信息显示不完整。强烈建议不要直接修改nginx.conf文件。一般会根据类似以下代码在相应目录下创建一个新文件/etc/nginx/conf.d/*.conf;配置以避免重大配置影响。 ” “作为代理,您需要明确您使用代理的条件。具体做法需要参考nginx配置语法,重点关注正则表达式的限制。
3)。关注信息
location ~ \.php$
{
proxy_pass http://192.168.1.106; #此处限制访问php文件时,跳转到192.168.1.106服务器解析
}
当访问php文件时,内容会被192.168.1.106服务器解析,然后交给192.168.1.87:80显示给用户。
location /zmPro/ {
proxy_pass http://192.168.1.143; #当访问zmPro目录时,由该IP服务器进行解析
}
4)。截屏
5).结果说明
另外,还有一些c++ Linux后端服务器开发的知识点可以分享:Linux、Nginx、MySQL、Redis、P2P、K8S、TCP/IP、协程、DPDK、音视频等。
有需要的朋友可以后台私信[1]获取学习视频。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。