一 、nginx 的优缺点:
nginx 相对 apache 的优点:
轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速啊
Nginx本身就是一个反向代理服务器
Nginx支持7层负载均衡
nginx 适合做静态,简单,效率高
apache 相对nginx 的优点:
rewrite ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
二、代理服务器
1、什么是代理服务器
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
2、为什么要使用代理服务器
1)提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
2)防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
3)通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的×××浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。
###反向代理 VS 正向代理
1、什么是正向代理?什么是反向代理?
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
2、反向代理有哪些主要应用?
现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性***、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
三、反向代理服务器Nginx
Nginx作为近年来较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定哪台目标主机来处理当前请求。下面演示如何进行配置使Nginx发挥作用。
四、 nginx安装
  在 http://nginx.org/ 下载对应版本的nginx
   在 nginx 的目录下使用 start nginx 或者 双击 nginx.exe 打开nginx
五、nginx配置属性说明
#全局设置
main

运行用户

user www-data;

启动进程,通常设置成和cpu的数量相等

worker_processes 1;

全局错误日志及PID文件

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

工作模式及连接数上限

events {
use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024; #单个后台worker process进程的最大并发链接数

multi_accept on;

}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
access_log /var/log/nginx/access.log;

#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile        on;
#将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞
tcp_nopush      on;
tcp_nodelay     on;
#连接超时时间
keepalive_timeout  65;#开启gzip压缩
gzip  on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";#设定请求缓冲
client_header_buffer_size    1k;
large_client_header_buffers  4 4k;include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;#设定负载均衡的服务器列表
upstream mysvr {#weigth参数表示权值,权值越高被分配到的几率越大#本机上的Squid开启3128端口server 192.168.8.1:3128 weight=5;server 192.168.8.2:80  weight=1;server 192.168.8.3:80  weight=6;
}server {#侦听80端口listen       80;#定义使用www.xx.com访问server_name  www.xx.com;#设定本虚拟主机的访问日志access_log  logs/www.xx.com.access.log  main;#默认请求location / {root   /root;      #定义服务器的默认网站根目录位置index index.php index.html index.htm;   #定义首页索引文件的名称fastcgi_pass  www.xx.com;fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name; include /etc/nginx/fastcgi_params;}# 定义错误提示页面error_page   500 502 503 504 /50x.html;  location = /50x.html {root   /root;}#静态文件,nginx自己处理location ~ ^/(images|javascript|js|css|flash|media|static)/ {root /var/www/virtual/htdocs;#过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。expires 30d;}#PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.location ~ \.php$ {root /root;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;include fastcgi_params;}#设定查看Nginx状态的地址location /NginxStatus {stub_status            on;access_log              on;auth_basic              "NginxStatus";auth_basic_user_file  conf/htpasswd;}#禁止访问 .htxxx 文件location ~ /\.ht {deny all;}}
#第一个虚拟服务器
server {#侦听192.168.8.x的80端口listen       80;server_name  192.168.8.x;#对aspx后缀的进行负载均衡请求location ~ .*\.aspx$ {root   /root;#定义服务器的默认网站根目录位置index index.php index.html index.htm;#定义首页索引文件的名称proxy_pass  http://mysvr;#请求转向mysvr 定义的服务器列表#以下是一些反向代理的配置可删除.proxy_redirect off;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IPproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 10m;    #允许客户端请求的最大单文件字节数client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,proxy_connect_timeout 90;  #nginx跟后端服务器连接超时时间(代理连接超时)proxy_send_timeout 90;        #后端服务器数据回传时间(代理发送超时)proxy_read_timeout 90;         #连接成功后,后端服务器响应时间(代理接收超时)proxy_buffer_size 4k;             #设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2)proxy_temp_file_write_size 64k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传}
}

}

六、nginx反向代理的配置
本地起两个项目,源码在此。
分别在这两个文件夹下面运行  
npm install
node server.js
在浏览器输入
本机ip:4789
本机ip:5789
可以访问到这两个页面
接着我们想使用
test.nginx.com访问到 页面5789
test.nginx.com/bug 访问到页面5789

则我们首先需要配置hosts
win 下hosts 的地址为 C:\Windows\System32\drivers\etc
我们需要在hosts文件里面添加如下配置
172.18.144.23 test.nginx.com
然后在 nginx 的 http 模块上添加一个 server
server {
listen 80;
server_name test.nginx.com;

    location / {proxy_pass   http://172.18.144.23:4789/;}location /buy {proxy_pass   http://172.18.144.23:5789/;}                error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

然后重启nginx
在浏览器输入 test.nginx.com
在浏览器输入 test.nginx.com/bug
反向代理的原理过程就是这个样子。

七、nginx负载均衡的配置
在nginx中配置http
首先配置负载均衡的服务
在http模块中添加如下配置
upstream webservers {
server 172.18.144.23:4789 weight=10;
server 172.18.144.23:5789 weight=10;
} ### 此处设置的调度机制是轮询的
把server改为
server {
listen 80;
server_name test.nginx.com;
location / {
proxy_pass http://webservers;
}
location /buy {
proxy_pass http://172.18.144.23:5789/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

测试:
在浏览器输入 test.nginx.com,刷新,我们可以看到两种页面,说明nginx已经把我们的请求分发到不同的地方去了。

转载于:https://blog.51cto.com/13401381/2089548

Nginx反向代理以及负载均衡配置相关推荐

  1. Nginx反向代理实现负载均衡配置图解

     come from: http://www.php100.com/html/program/nginx/2013/0905/5529.html 负载均衡配置是超大型机器需要考虑的一些问题,同时也 ...

  2. 学完Nginx/OpenResty详解,反向代理与负载均衡配置,能涨薪多少

    反向代理与负载均衡配置 接下来介绍Nginx的重要功能:反向代理+负载均衡.单体Nginx的性能虽然不错,但也是有瓶颈的.打个比方:用户请求发起一个请求,网站显示的图片量比较大,如果这个时候有大量用户 ...

  3. Nginx代理支持GRPC的反向代理和负载均衡配置

    Nginx代理gRPC反向代理和负载均衡配置 linux版本安装 一.准备和安装 #指定目录安装( /home/yyt/nginxgrpc) mkdir /home/yyt/nginxgrpc cd ...

  4. 从0开始,在Linux中配置Nginx反向代理、负载均衡、session共享、动静分离

    写这篇文章花费了我近一周的时间,参考网上许多优秀的博客文章,我不敢说写的很好,至少很全很详细.本文先介绍原理部分,然后再进行实战操作,我认为这样才会有更深的理解,不过这也导致了文章篇幅很长.但是,如果 ...

  5. 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等 ...

  6. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    本站点停止更新,请访问:blog.coocap.com 相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tom ...

  7. 【转】Nginx反向代理和负载均衡

    原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...

  8. nginx ------反向代理和负载均衡

    nginx ------反向代理和负载均衡 最近由于公司的业务增长 服务器承受不住压力经常出现崩溃现象 为了解决 使用nginx的负载均衡解决,以下是操作步骤: 1.nginx 的负载均衡:将压力分散 ...

  9. Nginx反向代理与负载均衡等配置文件示例

    Nginx反向代理于负载均衡等配置文件示例 Nginx.conf配置文件 worker_processes 8;events {worker_connections 1024; }http {incl ...

最新文章

  1. 开发日记 20200129 新年这几天的总结
  2. synchronized()_这篇文章带你彻底理解synchronized关键字
  3. 机房收费--修改密码
  4. WebIDE discovery when destination is selected from dropdown list
  5. 贪心算法之阿里巴巴与四十大盗(背包问题)
  6. Oracle-物化视图
  7. java reader 方法_Java Reader reset()方法
  8. 流程图软件,visio,安装下载教程
  9. 数据库实验 实验一 数据库创建与管理
  10. 如何用 matplotlib 画论文中的CNN结构图
  11. Python实现飞翔的小鸟
  12. 用html做一个分类目录网站,分类目录网站做外链
  13. 手机更新显示itunes store无法连接服务器,iPhone无法连接App Store、iTunes Store?解决方法有哪些?...
  14. Chrome 浏览器安装 ChroPath 插件
  15. ENSP模拟实验OSPF虚链路
  16. 【工具-AWVS】AWVS安装与使用
  17. 阿里妈妈-网络广告位投资策略
  18. 《致橡树》-- 舒婷
  19. php大龄出路,大龄程序员的出路在哪里!
  20. bash和zsh的相互切换

热门文章

  1. “一线城市,年薪30万+,我却裸辞回老家”一个前程序员的 10 年职业思考
  2. 三周第五次课(4月10日)
  3. Android开发——说说Adapter那点事
  4. 基于OpenLayers+rbush实现高德轨迹样式
  5. 186. [USACO Oct08] 牧场旅行
  6. Node.js项目实践:构建可扩展的Web应用
  7. C#转换人民币大写金额
  8. open(/dev/ietctl, O_RDWR) 参数含义
  9. Kickstart的配置文件anaconda-ks.cfg解析
  10. Laravel之Eloquent ORM