您的位置:首页 > 运维架构 > 反向代理

在ubuntu上面配置nginx实现反向代理和负载均衡

2016-03-10 22:25 811 查看
这我们都知道Nginx这款服务器,它可以用来做反向代理服务器,也可以做负载均衡。

关于nginx(要读成 engine x),有兴趣的朋友可以多看一下官方网站:http://nginx.org/

通过Nginx做反向代理

首先,需要安装nginx

sudo apt-get install nginx


然后,需要对Nginx进行配置

cd /etc/nginx/sites-available/

这个目录下面默认会有一个default的配置文件,内容如下

image

它是在80端口进行监听。你可以直接修改这个文件,例如我上图中其实已经设置了将所有请求转发(proxy_pass)到之前我们启动的那个网站(8888端口)。

我们也可以自己创建一个独立的配置文件,另外指定一个端口

cat > nancydemo

然后输入如下的内容

server {
listen       81;
server_name  yourdomainname.com;
root /var/www/nancydemo;

location /Content/ {
alias /var/www/nancydemo/Content/;
location ~*  \.(jpg|jpeg|png|gif|ico|css|js|ttf)$ {
expires 365d;
}
}

location / {
proxy_pass http://127.0.0.1:8888; }
}


按下CTRL +D保存这个文件,然后重新加载一下配置信息,就可以在81端口访问到原先8888端口的内容了

sudo /etc/init.d/nginx reload


有童鞋可能会问了,为什么要这么麻烦呢?用户直接访问8888端口不就好了吗?通过访问81然后再访问8888端口,这样会不会有性能下降呢?

其实呢,这个问题的关键在于你要理解什么叫反向代理。反向代理一方面隐藏了真正的服务器信息(例如地址),另外,还可能带来更加快的访问速度。

直接访问(端口8888)以及通过代理(端口81)访问的压力测试结果

image

启用两台Web服务器,通过nginx做负载均衡

nginx不仅仅可以作为反向代理服务器,而且也是一款很出色的负载均衡服务器。为了做这个实验,我在服务器端分别用之前写好的程序,启动了两个网站,端口分别为8888和9999。

接下来介绍一下,如何配置nginx使其可以实现负载均衡。方法很简单,我们需要编辑nancydemo这个配置文件(请注意红色标出的部分)

upstream xizhang{
server 127.0.0.1:8888;
server 127.0.0.1:9999;

}
server {
listen       81;
server_name  yourdomainname.com;
root /var/www/nancydemo;

location /Content/ {
alias /var/www/nancydemo/Content/;
location ~*  \.(jpg|jpeg|png|gif|ico|css|js|ttf)$ {
expires 365d;
}
}

location / {
proxy_pass http://xizhang; }
}


image

配置完成之后,我们需要重新加载一下配置信息

sudo /etc/init.d/nginx reload


测试结果表明每秒请求数明显上升

image

我们可以在服务器中看到有两个nginx进程,以及mono的进程。

image

关于使用nginx实现负载均衡,还有一些细节,有兴趣可以参考 http://nginx.org/en/docs/http/load_balancing.html

nginx还可以作为静态资源服务器,实现动静分离(并且可以缓存起来),进一步提高Web服务器的性能和吞吐量。这个话题就不过多展开了,有兴趣的朋友们可以参考官方的文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx 负载均衡