`
jsczxy2
  • 浏览: 1257489 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

nginx 多域名配置以及负载均衡[转]

阅读更多

 

 nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件里。

     一、每个域名一个文件的写法

    首先打开nginx域名配置文件存放目录:/usr/local/nginx/conf/servers ,如要绑定域名www.web126.com 则在此目录建一个文件:www.web126.com.conf 然后在此文件中写规则,如:

server 

listen       80; 
server_name www.web126.com;             #绑定域名 
index index.htm index.html index.php;      #默认文件 
root /home/www/web126.com;               #网站根目录
include location.conf;                            #调用其他规则,也可去除
}

然后重起nginx服务器,域名就绑定成功了

nginx服务器重起命令:/etc/init.d/nginx restart

    二、一个文件多个域名的写法

    一个文件添加多个域名的规则也是一样,只要把上面单个域名重复写下来就ok了,如:

server 

listen       80; 
server_name www.web126.com;             #绑定域名 
index index.htm index.html index.php;      #默认文件 
root /home/www/web126.com;               #网站根目录
include location.conf;                            #调用其他规则,也可去除
}

 

server 

listen       80; 
server_name msn.web126.com;             #绑定域名 
index index.htm index.html index.php;      #默认文件 
root /home/www/msn.web126.com;        #网站根目录
include location.conf;                            #调用其他规则,也可去除
}

 

 

    三、不带www的域名加301跳转

    如果不带www的域名要加301跳转,那也是和绑定域名一样,先绑定不带www的域名,只是不用写网站目录,而是进行301跳转,如:

 

server
{
listen 80;
server_name web126.com;
rewrite ^/(.*) http://www.web126.com/$1 permanent;
}

 

    四、添加404网页

    添加404网页,都可又直接在里面添加,如:

 

 

server 

listen       80; 
server_name www.web126.com;             #绑定域名 
index index.htm index.html index.php;      #默认文件 
root /home/www/web126.com;               #网站根目录
include location.conf;                            #调用其他规则,也可去除
error_page 404  /404.html; 
}

 

最后还有一个方法需要注意,可能有需要禁止IP直接访问80端口或者禁止非本站的域名绑定我们的IP,这样的话应该

如下处理,放到最前一个server上面即可:

 

    server{

       listen   80 default;

       server_name      _;

        return 403;

     }

    学会上面四种规则方法,基本就可以自己独立解决nginx 多域名配置问题了

 

模块官方介绍: 
http://wiki.nginx.org/HttpUpstreamModule 
http://www.howtocn.org/nginx:Nginx%E6%A8%A1%E5%9D%97%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E4%B8%AD%E6%96%87%E7%89%88

说说upstream里的server指令: 
server 后面可以是域名格式,也可以是socket格式[ip:port],后面还可以带参数。参数有下面几个: 
weight = NUMBER - 设置服务器的权重值,默认为1. 值越大,分配的请求越多。只适用于轮询这种LB策略。 
max_fails = NUMBER - 在fail_timeout设置的时间内,尝试连接服务器失败的次数.默认为1,0表示关闭检查.错误类型在proxy_next_upstream or fastcgi_next_upstream中定义,(除了404错误不计入max_fails). 
fail_timeout = TIME - the time during which must occur *max_fails* number of unsuccessful attempts at communication with the server that would cause the server to be considered inoperative, and also the time for which the server will be considered inoperative (before another attempt is made). If not set the time is 10 seconds. fail_timeout has nothing to do with upstream response time, use proxy_connect_timeout and proxy_read_timeout for controlling this. 
down - marks server as permanently offline, to be used with the directive ip_hash. 
backup - (0.6.7 or later) only uses this server if the non-backup servers are all down or busy (cannot be used with the directive ip_hash) 


nginx负载均衡的策略: 

1.轮询(默认方式) 
对于一级后端服务器群,形成一个环队列的形式,对于每个到达的请求按时间顺序顺次分配给这些后端服务器。在前端调度器与后端服务器之间采用“心跳”方式进行状态检查,如果发现后端服务器宕机,则将其删除。 
    这种方式为默认配置,优点是简洁,但缺点是无法进行最优化调度,有可能有的请求需要耗时较久,这样会带来一定的不平衡。 
    它的例子:在http区域里添加: 
upstream lb { 
        server 10.10.57.122:80; 
        server 10.10.57.123:80; 

在你的某个server里增加: 
location / { 
              proxy_pass http://lb; 
        } 

2. 加权轮询 
    这是一种对上述方式的改进,引入权值的概念,能够解决后端服务器性能不均的情况。 

    例如这样一个配置: 
    upstream lb { 
         server 10.10.57.122:80 weight=5; 
         server 10.10.57.123:80 weight=10; 
    } 

ps:以上轮询负载均衡策略,我个人认为对于动态网站应用,这几乎就是形同摆设,没有人会采用。但一种情况例外:服务器端的session采用共享机制,如存储在数据库或者memcached内存里等。 
3. ip_hash(基于ip的hash分配策略) 
     这是一种非轮询式方式,对于每个到达的请求,直接通过其请求IP进行哈希的映射,通过映射结果获得那一台后端服务器要处理这个请求,这种方式有一个明显的好处是能够保证session的唯一性。 
    它的配置例子: 
upstream lb { 
        ip_hash; 
        server 10.10.57.122:80; 
        server 10.10.57.123:80; 

在你的某个server里增加: 
location / { 
              proxy_pass http://lb; 
        } 

    
This directive causes requests to be distributed between upstreams based on the IP-address of the client. 
The key for the hash is the class-C network address of the client. This method guarantees that the client request will always be transferred to the same server. But if this server is considered inoperative, then the request of this client will be transferred to another server. This gives a high probability clients will always connect to the same server. 

It is not possible to combine ip_hash and weight methods for connection distribution. If one of the servers must be removed for some time, you must mark that server as *down*. 

由这段英文解说知道,客户端只要来自同一网段的ip的request都会转发到相同的后端服务器上。这里的所谓的class-C network这里作者并没有很详细地解释,我只能说,写这句话的人不懂网络。我个人的理解是:以ip地址的点分十进制格式的前3个字节进行hash。 
其实这不是真正意义上的ip address hash,而只是network address hash。真正的ip address hash方式有不?其实可以通过下面介绍的url_hash来实现。关键指令:hash $remote_addr; 
不过这里有个前提,$remote_addr必须是client的real ip address。 
为什么这里能够实现真正意义上的ip address hash?很简单,就是这里整个ip address被当作一个字符串来对待,故只要ip地址(key)不同,hash必然也是不同的。 

4. url_hash(基于URL的哈希方式) 
    这种方式与IP的哈希方式类似,是对客户机请求的URL进行哈希操作,这样的方式有一个明显的好处是,能够便于内容缓存的实现,对于经常性的资源访问,采用这样的方式会获得非常好的质量。它目前不是nginx自带的功能,需要安装补丁方可使用。本指令的详细说明和安装见:(文章后面有附带详细安装实例) 
http://wiki.nginx.org/HttpUpstreamRequestHashModule 

    它的配置方式为: 
   
upstream lb { 
         server 10.10.57.122:80; 
         server 10.10.57.123:80; 
         hash $request_uri; 
    } 

如果将这里的$request_uri换成$remote_addr便可实现上面我所说的真正基于ip地址的策略。 
5. 基于服务响应式 
   这种方式是根据服务器端的动态响应,对每一个请求进行分配。 这种方式能够自动根据当前的后端实际负载来优化。 
   它的配置方式: 
upstream lb { 
         server 10.10.57.122:80; 
         server 10.10.57.123:80; 
         fair; 
    } 

这个没怎么测试,只是配起来用了下,机器差不多的话感觉就是轮询。 
=============================== 
cd nginx-0.7.67; 
patch -p0 < ../nginx_upstream_hash-0.3.1/nginx.patch 
configure时: 
./configure --prefix=/app/nginx -user=nobody -group=nobody \ 
--add-module=../nginx_upstream_hash-0.3.1/ \ 
--add-module=../gnosek-nginx-upstream-fair-2131c73/

分享到:
评论

相关推荐

    Nginx负载均衡特点

    Nginx的特点是: 1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构; 2、Nginx对网络的依赖比较小;... 另外默认的只有Round-robin和IP-hash两种负载均衡算法。

    nginx负载均衡的配置

    nginx负载均衡的配置,二级域名的配置

    使用OneinStack配置Nginx反向代理、多网站配置、多域名配置

    使用Oneinstack配置Nginx反向代理、多网站配置、多域名配置教程。内容包括如何卸载原装Nginx,如何为网站配置证书,如何实现http跳转https,如何实现a.com跳转www.a.com,以及Nginx重启命令等内容~

    CentOS基于nginx反向代理实现负载均衡的方法

    本文实例讲述了CentOS基于nginx反向代理实现负载均衡的方法。分享给大家供大家参考,具体如下: nginx做负载均衡的优点: 1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的...

    详解 Nginx 负载均衡和反向代理配置和优化

    Nginx 负载均衡和反向代理配置和优化 DNS 轮询方式: 介绍: DNS 轮询是指一个域名可以绑定到多个的 ip 服务器上, 用户在访问的时候 dns轮询访问这几个 ip 的服务器, 达到负载均衡的目的. 可以使用 linux 命令 dig ...

    Nginx负载均衡/SSL配置的实现

    当一个域名指向多台web服务器时,添加一台nginx负载均衡服务器,通过nginx负载均衡即可将来自于客户端的请求均衡的发送给每台web服务器,避免单台服务器负载过高而其余服务器较为空闲的不均衡情况出现 配置nginx负载...

    CentOS+Nginx配置详解

    CentOS6.5环境配置nginx1.6.2详解,包括SSL双向认证、负载均衡、反向代理等

    Linux 按照部署 Nginx 服务器 及相关依赖 - Nginx 配置讲解

    负载均衡则可以均匀地将请求分配给多个后端服务器。 6. URL重写和重定向:使用rewrite指令可以修改URL,实现URL重写或重定向。 7. 缓存配置:配置Nginx的缓存行为,包括缓存路径、缓存过期时间、缓存规则等。

    nginx 负载均衡 多站点共享Session

    •使用Cookie方式实现多个站点间的共享(这种方式只限于几个站点都在同一域名的情况下); 这里我们就 演练一下 以数据库的形来存储Session,来实现多站点共享Session。 首先我们 建好一下站点,如下图:   ...

    2022版Nginx教程(进阶高级,架构师必备)百度链接.rar

    核心技术篇:Nginx快速上手 Nginx安装部署,配合大量在线实操,搞定Nginx七大核心应用场景:反向代理、虚拟主机、域名解析、负载均衡、防盗链、url重定向、https,学完即可用。 部分文件目录: ├──01_Nginx从...

    Nginx服务器负载均衡及ssl原理、生成ssl密钥对、Nginx配置ssl操作示例

    Nginx负载均衡 当用户访问nginx定制好的域名时,nginx通过转发到几台真实的站点,通过upstream实现 [root@centos7 vhost]# vim /usr/local/nginx/conf/vhost/load.conf upstream www.tt.com #自定义域名 { # ip_ash...

    linux版nginx和依赖包

    2.负载均衡 1.将所有资源在每个web服务器安装配置一遍,例如服务器a,服务器b 2.安装好nginx环境及其依赖之后,配置nginx/conf/nginx.conf文件 upstream 集群名称{ server 服务器a的ip:端口 weight=20; #weight...

    详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点

    上一篇分享了 Nginx + Tomcat 反向代理 负载均衡 集群 部署指南,感觉还是相当实用型的,但是一般集群部署是基于大访问量的,可能有的企业用不到,类似一些企业官网,访问量并不是很大,基于这个新需求,今天专门为...

    nginx-1.16.0-windows x64

    搭配校园商城,已配置好负载均衡,本地域名映射等,自己使用!搭配校园商城,已配置好负载均衡,本地域名映射等,自己使用!搭配校园商城,已配置好负载均衡,本地域名映射等,自己使用!

    Nginx在线运行系统之实战配置

    本文以实际运行系统的nginx.conf配置来讲述配置参数,涉及**基本配置、负载均衡、SSL、多域名、配置片段、微信文件动态验证、升级自动提示、防域名劫持**等各种实战实际情况。

    nlb负载均衡架设教程

    nlb负载均衡架设教程图解在Server 2008上搭建域控制器 打开服务器管理,如下图所示: 1. 2 选择【角色】然后点击右侧新建角色,在“添加角色向导”页面点击【服务器角色】,如下图所示: 2. 3 勾选“Active ...

    Linux 系统 Nginx 按照部署文档

    以上简单描述提供了部署Nginx的基本步骤,但根据具体情况可能需要进一步配置Nginx,如设置虚拟主机、SSL证书、反向代理、负载均衡等。确保根据实际需求和安全要求进行适当的配置和调整。同时,为保障系统安全,建议...

    nginxconf:web页面自由配置nginx虚拟主机

    增加设置多个nginx配置模板,可以实现负载均衡、自动配置虚拟主机等高级的nginx的功能 nginx配置模板为nginxconf/template/domainlocalconf.tpl #该项目使用帮助 由于我在windows上编译的,暂时没有找到交叉编译...

    nginx视频教程

    nginx 视频教程23集,包含nginx安装,虚拟主机配置,多域名配置,集群搭建,还有笔记资料,自己花钱买的

    nginx与keepalived和lvs高可用配置.zip

    其中包含nginx的源码安装包、安装配置文档,keepalived高...可以根据这些配置文档与相对应的博客配置nginx的负载均衡与高可用!除了这些以外还有一个SwitchHosts工具,可以用来查看与修改当前电脑中的域名映射文件。

Global site tag (gtag.js) - Google Analytics