热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

freebsd系统中使用Nginx实现反向代理和负载均衡

设置方法简述:在http{}块定义负载均衡服务器列表,在server{}块的location下使用一、反向代理配置(一)单个反向代理使用1、设置反向代理配置#eeusr/local/etc/nginx/proxy.confserver{listen80;server_namewww.example.com;locati
设置方法简述:在http{}块定义负载均衡服务器列表,在server{}块的location下使用

一、反向代理配置
(一)单个反向代理使用
1、设置反向代理配置
#ee usr/local/etc/nginx/proxy.conf
server {
        listen  80;                    
        server_name     www.example.com;
        location / {                   
proxy_pass              http://192.168.1.200:8080;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        Host $host;
        }                              
}

2、加载反向代理配置
在http{}块中的第1个server{}块
include /usr/local/etc/nginx/proxy.conf;
加载反向代理配置
这里先在server{}块中
# vim /usr/local/etc/nginx/nginx.conf

(二)多个反向代理使用
在虚拟站点中使用,不同功能指向不同后端服务器
http{}块中的第1个server{}块加载虚拟站点配置
include vhosts/*.conf;
# vim /usr/local/etc/nginx/vhosts/www.example.com.conf
    …
location /static {
proxy_pass              http://192.168.1.200:8080;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        Host $host;
     }
         …
     location /news {
             proxy_pass              http://192.168.1.220:8080;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        Host $host;
     }
测试好像无法访问http://www.example.com/static/
使用rewrite ^(.*)   http://192.168.1.200:8080; 则可以
LOG
192.168.1.1 - - [16/Apr/2012:21:50:44 +0800] "GET /static/ HTTP/1.1" 404 205 "-" "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0"
在http://192.168.1.200:8080下有文件目录static/index.html后可以访问。原因是前端访问路径和后端一样。
如果代理到http://192.168.1.200:8080根目录下 如何设置
正确设置:将所有/static的请求rewite到/,然后再使用代理
     location  /static {
rewrite ^/static/(.*)$  /$1 break;
proxy_pass              http://192.168.1.200:8080;
#proxy_set_header        X-Real-IP $remote_addr;
#proxy_set_header        Host $host;
             #proxy_redirect   default;
 
     }
朋友介绍在后端也用于和前端一样的目录结构,这样简单,配置文件也简单,方便维护,同时节省了rewrite的开销
例如
                location /bbs/ {
                            proxy_pass    http://192.168.1.200:8099/bbs/;
                            proxy_redirect default ;
}
 (三)记录真实的ip地址
代理补充
如果要后端记录来源地址的真实IP而不是前端代理的IP.如果后端使用nginx做web可以在nginx配置中
http {
        set_real_ip_from       192.168.1.200;
        real_ip_header         X-Real-IP;
}
对应代理的配置
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        Host $host;
 
 
二、负载均衡配置
负载均衡就是多个站点做一组反向代理
1、  http {}块中配置
# vim /usr/local/etc/nginx/nginx.conf
http {

       upstream cluster_server_com {
server 172.17.2.192:80 max_fails=2 fail_timeout=30s;
server 172.17.2.190:80 max_fails=2 fail_timeout=30s;  
   }
….
}
2、  server{}块使用前面配置的cluster_server_com,虚拟站点中
# vim /usr/local/etc/nginx/vhosts/www.example.com.conf
server {

location / {
proxy_pass                         http://cluster_server_com;
proxy_redirect          off;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size    10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout   90;
        proxy_send_timeout      90;
        proxy_read_timeout      90;
        proxy_buffer_size       4k;
        proxy_buffers           4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        }
...
}                
3、  访问测试
可以看到是以此轮询到后端两台服务器
4、nginx的upstream目前支持4种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4)、url_hash(第三方
upstream cluster_server_com {#定义负载均衡设备的Ip及设备状态
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
每个设备的状态设置为:
a)
down 表示单前的server暂时不参与负载
b)
weight 默认为1.weight越大,负载的权重就越大。
c)
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
d)
fail_timeout:max_fails次失败后,暂停的时间。
e)
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

推荐阅读
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • ZooKeeper 入门指南
    本文将详细介绍ZooKeeper的工作机制、特点、数据结构以及常见的应用场景,包括统一命名服务、统一配置管理、统一集群管理、服务器动态上下线和软负载均衡。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • Nginx 启动命令及 Systemctl 配置详解
    本文详细介绍了在未配置和已配置 Systemctl 的情况下启动 Nginx 的方法,并提供了详细的配置步骤和命令示例。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 本文介绍了两种有效的方法来解决DataSnap支持的Tcp长连接数受限的问题。方案一通过代理服务器实现负载均衡,方案二则利用多进程技术提升连接数。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 阿里云服务器搭建详解——Ubuntu
    由于自己电脑配置跟不上,双系统一开,整个电脑就会变得非常卡顿,所以决定在阿里云买一个云服务器。听朋友说,学生买的话是非常便宜 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
author-avatar
卸妆乳123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有