在ubuntu上面配置nginx实现反向代理和负载均衡
2015-07-29 20:50
826 查看
上一篇文章(/article/4660166.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托管(Self-hosting)的应用程序,然后将其部署到了一台Ubuntu的虚拟机上面,通过mono将其顺利地运行了起来,这样也就实现了.NET应用程序在Liunx系统上面的移植。
这一篇要讲解的是进一步的实验,我们都知道Nginx这款服务器,它可以用来做反向代理服务器,也可以做负载均衡。
关于nginx(要读成 engine x),有兴趣的朋友可以多看一下官方网站:http://nginx.org/
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 href="http://;" target=_blank>;
}
}
按下CTRL +D保存这个文件,然后重新加载一下配置信息,就可以在81端口访问到原先8888端口的内容了
sudo /etc/init.d/nginx reload
有童鞋可能会问了,为什么要这么麻烦呢?用户直接访问8888端口不就好了吗?通过访问81然后再访问8888端口,这样会不会有性能下降呢?
其实呢,这个问题的关键在于你要理解什么叫反向代理。反向代理一方面隐藏了真正的服务器信息(例如地址),另外,还可能带来更加快的访问速度。
接下来介绍一下,如何配置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;
}
}
配置完成之后,我们需要重新加载一下配置信息
sudo /etc/init.d/nginx reload
测试结果表明每秒请求数明显上升
我们可以在服务器中看到有两个nginx进程,以及mono的进程。
关于使用nginx实现负载均衡,还有一些细节,有兴趣可以参考 http://nginx.org/en/docs/http/load_balancing.html
nginx还可以作为静态资源服务器,实现动静分离(并且可以缓存起来),进一步提高Web服务器的性能和吞吐量。这个话题就不过多展开了,有兴趣的朋友们可以参考官方的文档
这一篇要讲解的是进一步的实验,我们都知道Nginx这款服务器,它可以用来做反向代理服务器,也可以做负载均衡。
关于nginx(要读成 engine x),有兴趣的朋友可以多看一下官方网站:http://nginx.org/
通过Nginx做反向代理
首先,需要安装nginxsudo apt-get install nginx
然后,需要对Nginx进行配置
cd /etc/nginx/sites-available/
这个目录下面默认会有一个default的配置文件,内容如下
它是在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 href="http://;" target=_blank>;
}
}
按下CTRL +D保存这个文件,然后重新加载一下配置信息,就可以在81端口访问到原先8888端口的内容了
sudo /etc/init.d/nginx reload
有童鞋可能会问了,为什么要这么麻烦呢?用户直接访问8888端口不就好了吗?通过访问81然后再访问8888端口,这样会不会有性能下降呢?
其实呢,这个问题的关键在于你要理解什么叫反向代理。反向代理一方面隐藏了真正的服务器信息(例如地址),另外,还可能带来更加快的访问速度。
直接访问(端口8888)以及通过代理(端口81)访问的压力测试结果
启用两台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;
}
}
配置完成之后,我们需要重新加载一下配置信息
sudo /etc/init.d/nginx reload
测试结果表明每秒请求数明显上升
我们可以在服务器中看到有两个nginx进程,以及mono的进程。
关于使用nginx实现负载均衡,还有一些细节,有兴趣可以参考 http://nginx.org/en/docs/http/load_balancing.html
nginx还可以作为静态资源服务器,实现动静分离(并且可以缓存起来),进一步提高Web服务器的性能和吞吐量。这个话题就不过多展开了,有兴趣的朋友们可以参考官方的文档
相关文章推荐
- python写的一个squid访问日志分析的小程序
- nginx的反向代理和负载均衡的一个总结
- nginx 反向代理
- nginx反向代理基本配置
- 解决Nginx反向代理后无法加载静态文件的问题
- Nginx反向代理和负载均衡部署指南
- squid代理服务器
- 反向代理
- ssh 反向代理
- nginx 反向代理 与 Apache backend的配置联合配置
- CDN和反向代理
- windows与linux下apache+tomcat负载均衡部署。反向代理黏贴保证sessionID不变。
- 如何开启apache虚拟目录反向代理
- windows 下安装squid3
- keepalived高可用反向代理的nginx
- squid需要调的几项参数
- 关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10)
- iptables限制MACIP绑定上网+Squid 透明代理How to
- 正向代理和反向代理
- nfs、samba、squid代理部署及优化