nginx学习(2):启动gzip、虚拟主机、请求转发、负载均衡

一、启用gzip

1     gzip  on;
2     gzip_min_length 1k;
3     gzip_buffers 4 16k;
4     gzip_http_version 1.1;
5     gzip_comp_level 2;
6     gzip_types text/plain application/x-javascript text/css application/xml application/json;
7     gzip_vary on;

将上面这段放在nginx.conf文件 http{...}之间即可

二、虚拟主机

 1     server {
 2         listen       80;
 3         server_name  www.aaa.com;
 4         access_log logs/aaa.access.log combined;
 5         location / {
 6             root   r:/www/aaa.com;
 7             index  index.html index.htm;
 8         }
 9     }
10
11     server {
12         listen       80;
13         server_name  www.bbb.com;
14         access_log logs/bbb.access.log combined;
15         location / {
16             root   r:/www/bbb.com;
17             index  index.html index.htm;
18         }
19     }

这里配置了二个虚拟主机,分别绑定到域名www.aaa.com及www.bbb.com

三、请求转发

如上图,为了安全起见,通常会把真正的web 应用服务器放在内网,不允许外界直接访问,这时可利用nginx的反向代理将请求转到内部服务器

 1     server {
 2         listen       80;
 3         server_name  www.aaa.com;
 4     location / {
 5         proxy_pass http://192.168.1.201:8080 ;
 6         proxy_set_header Host $host:8080;
 7         proxy_set_header X-Real-IP $remote_addr;
 8         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 9         proxy_set_header Via "nginx";
10     }
11     access_log off;
12     }

这样,访问 http://www.aaa.com/home/index.aspx 就相当于访问http://192.168.1.201:8080/home/index.aspx

有些时候,我们希望将共用的静态资源(比如:jquery,共用css),直接放在nginx下,背后的web app server,只处理动态资源(比如:.aspx/.do/.jsp),可以改进一下:

 1     server {
 2         listen       80;
 3         server_name  www.aaa.com;
 4     root R:/www/aaa.com;
 5
 6     location / {
 7         proxy_pass http://192.168.1.201:8080 ;
 8         proxy_set_header Host $host:8080;
 9         proxy_set_header X-Real-IP $remote_addr;
10         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
11         proxy_set_header Via "nginx";
12     }
13
14     location ~ .*\.(js|css)?$ {
15         expires 1h;
16     }
17
18     access_log off;
19     }

这样,访问http://www.aaa.com/content/site.css 实际上读取的是R:/www/aaa.com/content/site.css 这个文件

四、负载均衡

如上图,nginx在前端利用反向代理实现软件负载均衡,nginx不仅能实现负载均衡,当某一个node失效时,还能自动故障转移,关键配置如下:

 1     proxy_connect_timeout 5;
 2
 3     upstream aaa_server_group{
 4     server 172.21.129.181:9091 max_fails=1 fail_timeout=60s;
 5     server 172.21.129.181:9092 max_fails=1 fail_timeout=60s;
 6     server 172.21.129.57:9012 max_fails=1 fail_timeout=60s;
 7     ip_hash;
 8     }
 9
10     server {
11         listen       80;
12         server_name  www.aaa.com;
13     root R:/www/aaa.com;
14
15     location / {
16         proxy_next_upstream http_502 http_504 error timeout invalid_header;
17         proxy_pass http://aaa_server_group ;
18         proxy_set_header X-Forwarded-For $remote_addr;
19     }
20
21     location ~ .*\.(js|css)?$ {
22         expires 1h;
23     }
24
25     access_log off;
26     }

解释一下:

第1行, proxy_connect_timeout 5;表示nginx连接后端服务器时,如果超过5秒没反应,则认为超时

第3行,这里定义了一组服务器aaa_server_group,其中max_fails=1 fail_timeout=60s 表示如果该节点转发失败1次,接下来的60秒内,将不再转发到这台服务器

第6行,表示如果后端服务器返回502,504,超时等错误时,即认为节点失效,自动将请求转发到其它节点

nginx负载均衡的方案有好几种,这里我们配置为ip_hash;表示会根据客户端的IP生成hash,固定转发到某一台node,这样可解决集群环境中session丢失的问题。如果web应用中没有使用session,去掉ip_hash;即变成轮讯方案。此外,4-6行上,还可以加weight=N来指定权重,按权重转发,如果服务器配置不均衡,比如某一台服务器配置特别强,可以考虑将这台服务器的weight值加大。

如果某台服务器暂时不想加入负载均衡,在最后加 down即可。

最后附送一个小技巧:nginx -t 可以检查配置文件是否正确

时间: 2024-09-29 16:16:13

nginx学习(2):启动gzip、虚拟主机、请求转发、负载均衡的相关文章

HAProxy详解(三):基于虚拟主机的HAProxy负载均衡系统配置实例【转】

一.基于虚拟主机的HAProxy负载均衡系统配置实例 1.通过HAProxy的ACL规则配置虚拟主机: 下面将通过HAProxy的ACL功能配置一套基于虚拟主机的负载均衡系统.这里操作系统环境为:CentOS release 6.7,HAProxy版本为haproxy-1.4.24,要实现的功能如图: 本实例有一个电商网站服务器群.一个论坛服务器群.一个博客服务器群和默认服务器群,4个服务器群都由多台服务器组成,而4个服务器群又组成了一个应用服务器群组,在每个服务器群的前端有一个基于HAProx

nginx 虚拟主机 反向代理 负载均衡

nginx是一款免费.开源的http服务器,它是由俄罗斯程序设计师开发的,官方测试,nginx能支撑5万的并发量,主要功能有虚拟主机.反向代理和负载均衡等. nginx配置 # 全局块 ... # events块 events { ... } # http块 http { # http全局块 ... # 虚拟主机server块 server { # server全局块 ... # location块 location [PATTERN] { ... } location [PATTERN] {

nginx之安装、多虚拟主机、反向代理和负载均衡

一.web服务器与web框架 1.web服务器简介 Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的Web服务器会通过 HTTP(超文本传输协议)或 HTTPS(安全超文本传输协议)把请求的内容传送给用户. 目前能够提供 Web 网络服务的程序有 IIS.Nginx 和 Apache 等.其中,IIS(Internet Information Services,互联网信息服务)是Windows系统中默认的Web服务程序Nginx

基于Nginx搭建Web服务器及虚拟主机相关配置详解

随着计算机与Internet技术的高速发展,各种各样的Web站点也就成为面向用户的中坚力量.在各种网站服务器软件中.除了Apache外,还有一款轻量级的HTTP服务器软件--Nginx. 基于Apache搭建Web服务器可以参考博文:基于Apache搭建Web服务器详解 一.Nginx服务简介 Nginx由俄罗斯的lgor Sysoev开发,专为性能优化而开发,其最知名的优点就是它的稳定性和低系统资源消耗.以及对HTTP并发连接的高处立能力(单台物理服务器可支持30000~50000个并发请求)

十二周二次课 12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.

十二周二次课 12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.9 Nginx域名重定向 12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.9 Nginx域名重定向 原文地址:http://blog.51cto.com/wbyyy/2087031

Nginx web服务器 安装 配置PHP SSL 反向代理 负载均衡 web缓存 URL 重写 写分离

[Nginx web服务器] 安装 为nginx提供SysV init脚本 优先级 让Nginx支持站点用户认证访问 Nginx SSL 配置 打开防火墙443 端口 基于主机名的 虚拟主机 源码安装 PHP Nginx反向代理 Nginx负载均衡 Nginx web缓存 Nginx URL 重写 Nginx读写分离 [Nginx web服务器] 支持5万高并发,实际3万 负载均衡  LVS 反向代理 200第一次连接 302 缓存里面来的 [[email protected] home]# d

nginx反向代理tomacat+keepalived实现动静分离、负载均衡、高可用

本文的动静分离主要是通过nginx+tomcat来实现,其中nginx处理图片.html.JS.CSS等静态文件,tomcat处理jsp.servlet等动态请求 服务器名称                                 系统版本                           预装软件                     IP地址 Nginx服务器                             CentOS 7 最小安装              Nginx

Centos 7搭建Nginx网站服务器及配置虚拟主机

Nginx专为性能优化而开发,其最大的优点就是它的稳定性和低系统资源消耗,以及对http并发连接的高处理能力,单台物理服务器可支持20000~50000个并发请求,正是如此,大量提供社交网络.新闻资讯.电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供web服务,目前中国大陆使用nginx网站用户有:新浪.网易.腾讯,另外知名的微网志Plurk也使用nginx. Nginx是一个很牛的高性能Web和反向代理服务器,它具有有很多非常优越的特性: 高并发连接:官方测试能支撑5万并发连接,在实际生

构建Nginx服务器之一 安装及虚拟主机配置

一.Nginx简介     Nginx("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名. 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括Yandex.

【转载】【nginx运维基础(2)】Nginx的配置文件说明及虚拟主机配置示例

转自 :http://www.cnblogs.com/nixi8/p/4869760.html 配置文件说明 #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为当前主机的CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log ar/loginx/error.log info; #进程文件 pid /usr/loc