热门标签 | 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机器。所以这台机器压力会最轻。

推荐阅读
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • Windos10系统下,Nginx设置文件服务器下载,关于中文路径被浏览器编码后,nginx无法访问问题
    windows10默认编码为gbk,需要在区域设置中,启用UTF—8编码,然后nginx配置文件中在设置charset,(edge可借助charset工具扩展,查看当 ... [详细]
  • nginx 反向代理proxy参数讲解
    ![](http:i2.51cto.comimagesblog20180805c32a728954d93ee2a4e4fb59c150a15b.png?x-oss-processi ... [详细]
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社区 版权所有