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

来源:互联网 发布:最新推广软件 编辑:程序博客网 时间:2024/05/20 01:12

这我们都知道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服务器的性能和吞吐量。这个话题就不过多展开了,有兴趣的朋友们可以参考官方的文档

0 0
原创粉丝点击