版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333764
前几天在学习负载均衡的知识,遇到了 Nginx 反向代理 的概念,其实在年初就写过一次 Nginx 反向实例的笔记,今天翻看发现很是潦草,而且当时的编辑器也不满足Markdown,作为尴尬症晚期的我,索性删掉重新整理一篇 …
代理其实就是一个中介,A 和 B 本来可以直连,中间插入一个 C,C 就是中介。
刚开始的时候,代理多数是帮助内网 client 访问外网 server 用的(比如HTTP代理),从内到外。
正向代理隐藏真实客户端,反向代理隐藏真实服务端 正向代理,代理的对象是客户端;反向代理,代理的对象是服务端
现在许多大型 web 网站都用到反向代理。 除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器
(1). 解决了网站服务器对外可见的问题; (2). 节约了有限的 IP 地址资源,企业内所有的网站共享一个在 internet 中注册的 IP 地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务; (3). 保护了真实的 web 服务器,web 服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了 web 服务器的资源安全; (4). 加速了对网站访问速度,减轻 web 服务器的负担,反向代理具有缓存网页的功能,如果用户需要的内容在缓存中,则可以直接从代理服务其中获取,减轻了 web 服务器的负荷,同时也加快了用户的访问速度。 (5).可以实现安全过滤,流控,防 DDOS 等一系列策略
以上的潜台词是:用户和负载均衡设备直接通信,也意味着用户做服务器域名解析时,解析得到的 IP 其实是负载均衡的 IP,而不是服务器的 IP,这样有一个好处是,当新加入/移走服务器时,仅仅需要修改负载均衡的服务器列表,而不会影响现有的服务。(来自:知乎)
#设定负载均衡的服务器列表
#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;
}
}
include /etc/nginx/conf.d/*.conf;
进行对应目录下新建文件的配置,以避免较大的配置影响.192.168.1.87:80
,则访问静态文件时会按 weight 比重分配到 192.168.1.106:80
和 192.168.1.143:80
服务器器,进行负载分配location ~ \.php$
{
proxy_pass http://192.168.1.106; #此处限制访问php文件时,跳转到192.168.1.106服务器解析
}
location /zmPro/ {
proxy_pass http://192.168.1.143; #当访问zmPro目录时,由该IP服务器进行解析
}