nginx-启动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 可以检查配置文件是否正确
nginx-启动gzip、虚拟主机、请求转发、负载均衡的更多相关文章
- HAProxy详解(三):基于虚拟主机的HAProxy负载均衡系统配置实例【转】
一.基于虚拟主机的HAProxy负载均衡系统配置实例 1.通过HAProxy的ACL规则配置虚拟主机: 下面将通过HAProxy的ACL功能配置一套基于虚拟主机的负载均衡系统.这里操作系统环境为:Ce ...
- nginx 虚拟主机+反向代理+负载均衡
nginx是一款免费.开源的http服务器,它是由俄罗斯程序设计师开发的,官方测试,nginx能支撑5万的并发量,主要功能有虚拟主机.反向代理和负载均衡等. nginx配置 # 全局块 ... # e ...
- 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置
第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本 uwsgi- ...
- Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置
Nginx多站点虚拟主机实现单独启动停止php-fpm.单独控制权限设置 来源:osyunwei.com 作者:qihang01 发表于:2012-08-19 21:26 点击: 说明: 站点1:bb ...
- Nginx(二):虚拟主机配置
什么是虚拟主机? 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功 ...
- linux上nginx上配置虚拟主机的相关配置
1.配置主配置: nginx/conf/nginx.conf 2.虚拟主机配置:nginx/conf/extra/learn.weixin.com.conf 配置完后,重启服务器!
- nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...
- 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?
本文引用了“蔷薇Nina”的“Nginx 相关介绍(Nginx是什么?能干嘛?)”一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡 ...
- Nginx 部署、反向代理配置、负载均衡
Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...
- keepalived+nginx实现HA高可用的web负载均衡
Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用.Keepalived ...
随机推荐
- flask之wtform与flask-session组件
1.wtform from flask import Flask, render_template, request, redirect from wtforms import Form from w ...
- CentOS+Nginx+PHP 前端部署
都说Nginx比Apache性能优越,一直没有时间装测试,今天终于有时间装上试试性能了,其实Nginx的安装非常简单,具体流水步骤记录如下: 1.系统环境: ===================== ...
- Loadrunner11的安装方法和破解
前提:我使用的是在虚拟机下安装32位win7系统,浏览器为IE8(为录制脚本做铺垫) LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式 ...
- iOS主流机型更新
主流机型更新后,舍弃了原有的iPhone 4 ,iPhone 4s, iPhone 5 ,iPhone 5s.增加了iPhone X,iPhone 8和iPhone 8 plus. 总体上屏幕趋于一个 ...
- centos7安装单机rocketmq,图文教程
系统环境 1.操作系统:64位CentOS Linux release 7.2.1511 (Core) 2.jdk版本:1.8.0_121 3.IP地址:192.168.1.210 下载rocketm ...
- Spring boot 远程调试
设置远程调试,可以在正式环境上随时跟踪与调试生产故障. 依赖 在 pom.xml 中增加远程调试依赖(试了下,不加也行). <plugins> <plugin> <gro ...
- 基于Python3.6使用Django框架连接mysql数据库的驱动模块安装解决办法
解决办法1 使用PyMySQL模块,直接使用pip install pymysql即可. 参考文章:https://www.cnblogs.com/wcwnina/p/8719482.html 原文内 ...
- eclipse spring 配置文件xml校验时,xsd报错
1.情景展示 eclipse中,spring配置文件报错信息如下: 配置文件头部引用信息为: <?xml version="1.0" encoding="UTF ...
- linux下open和fopen的区别
二者返回值不同. fopen可以指定宽字符和ASCI.
- ERROR: Field * doesn't have a default value
ERROR: Field 'status' doesn't have a default value 今天做项目,在插入数据时出现了这个从没遇到的异常,看了98%的异常分析都是针对组件id出现了类似的 ...