在ubuntu上面配置nginx实现反向代理和负载均衡
上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托管(Self-hosting)的应用程序,然后将其部署到了一台Ubuntu的虚拟机上面,通过mono将其顺利地运行了起来,这样也就实现了.NET应用程序在Liunx系统上面的移植。
这一篇要讲解的是进一步的实验,我们都知道Nginx这款服务器,它可以用来做反向代理服务器,也可以做负载均衡。
关于nginx(要读成 engine x),有兴趣的朋友可以多看一下官方网站:http://nginx.org/
通过Nginx做反向代理
首先,需要安装nginx
sudo 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;
}
}
按下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服务器的性能和吞吐量。这个话题就不过多展开了,有兴趣的朋友们可以参考官方的文档
在ubuntu上面配置nginx实现反向代理和负载均衡的更多相关文章
- nginx简单反向代理和负载均衡(ubuntu)
nginx简单反向代理与负载均衡 环境:三台ubuntu 12.04.5 虚拟机 均装有nginx 1.1.19 以下u1(192.168.240.129) ,u2(192.168.240.13 ...
- nginx的反向代理和负载均衡的一个总结
之前一直觉的nginx的反向代理和负载均衡很厉害的样子,最近有机会接触了一下公司的这方面的技术,发现技术就是一张窗户纸呀,捅破了啥都明白了! 接下来先看一下nginx的反向代理: 简单的来说就是ngi ...
- nginx(三)反向代理和负载均衡
nginx(三)反向代理和负载均衡 正向代理概念:比如在学校要上网,在学校内网是一个内网ip,需要连上公网就需要一个正向代理服务器. 反向代理概念: 看下图(Nginx只做请求的转发,后台有多个htt ...
- nginx实现反向代理和负载均衡
利用nginx做反向代理和负载均衡是减轻服务器压力的有效方式.nginx代理服务器接收多个客户端请求, 根据配置的参数均衡到每个tomcat服务器上,tomcat处理请求,返回响应结果给nginx,n ...
- nginx的反向代理和负载均衡的区别是什么 - 开源中国社区
nginx的反向代理和负载均衡的区别是什么 - 开源中国社区 nginx的反向代理和负载均衡的区别是什么 #user nobody;worker_processes 1;#error_log ...
- 七、CentOS 6.5 下 Nginx的反向代理和负载均衡的实现
CentOS 6.5 下 Nginx的反向代理和负载均衡的实现 * 修复上面文章的问题: 复制出一个tomcat2之后,修改service.xml文件时,要修改三个端口: 1. <!-- 800 ...
- Nginx使用反向代理实现负载均衡
Nginx使用反向代理实现负载均衡 yls 2019-9-20 简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为 ...
- 转载:Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
转载自:https://blog.51cto.com/wjw7702/1150225 一.概述 如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文 ...
- nginx 作为反向代理实现负载均衡的例子
以下我们就来举例说明如何使用 nginx 实现负载均衡.因为nginx在处理并发方面的优势,现在这个应用非常常见.nginx 这个轻量级.高性能的 web server 主要可以干两件事情: 〉直接作 ...
随机推荐
- java分享第十八天( JAVA利用enum结合testng做数据驱动示例)
数据驱动是做自动化测试中很重要的一部分,数据源的方案也是百花八门了,比如利用外部文件,直接在@DataProvider中写死等等,我们今天介绍一下利用enum来做数据源,先来看一下enum的写法: p ...
- ubuntu 16.04 Dockerfile 安装mysql
默认上MariaDB的包并没有在Ubuntu仓库中.要安装MariaDB,我们首先要设置MariaDB仓库. 配置MariaDB 仓库 # apt-get install software-prope ...
- jQuery最基础最全面的选择器大览
一.基本选择器 1.标签选择器 (element):根据给定的标签名匹配元素 eg:$("h2")选取所有h2元素 --- 返回元素集合 2.类选择器 (.class):根 ...
- 领域驱动有感<上>
最近看了<领域驱动设计:软件核心复杂性应对之道>,从字面上来看领域驱动就是解决软件复杂性问题的:然而领域驱动设计的门槛很高,没有很深厚的面向对象编码能力几乎不可能实践成功.Martin F ...
- USACO翻译:USACO 2014 FEB SILVER 三题
USACO 2014 FEB SILVER 一.题目概览 中文题目名称 自动打字 路障 神秘代码 英文题目名称 auto rblock scode 可执行文件名 auto rblock scode 输 ...
- matlab size、numel、length、fix函数的使用,补充nargin
size():获取矩阵的行数和列数 (1)s=size(A), 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数.(2)[r,c]=size(A), 当有 ...
- ThoughtWorks代码挑战——FizzBuzzWhizz
很久没发表过文章了,今天看到一篇文章 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏(C#解法) 看到LZ的2B青年代码,实在是惨不忍睹,故写篇文章来探讨下这类 ...
- Some warning were found during validation
前几天做一个iOS下的App更新,到上传的时候出了问题,一直传了大半个小时,结果还是没传完,再试依然不行,于是只好关机,把电脑带回家弄. 回家后出现了更奇怪的事,经过漫长等待后,竟然出现这个提示: 我 ...
- 体验了微信小程序,发现安卓用户终于把果粉“碾压”了一次
今天早上,张小龙在微信公开课上分享了小程序的理念,并且公布了小程序将于1月9日上线. 为了体现张小龙对未来程序形态的理解,小程序有四个特定:无需安装.触手可及.用完即走.无需卸载.今天,36氪刚好有机 ...
- 【NodeJS 学习笔记04】新闻发布系统
前言 昨天,我们跟着这位大哥的博客(https://github.com/nswbmw/N-blog/wiki/_pages)进行了nodeJS初步的学习,最后也能将数据插入数据库了 但是一味的跟着别 ...