Nginx之ngx_http_proxy_module模块详解

一、正反向代理简介

      1、正向代理:局域网内的机器借助于代理服务器访问局域网外的网站

         这时正向代理的功能:

           (1)、增强局域网内部网络安全

           (2)、利用正向代理可以堆局域网对外网的访问进行必要的监控和管理

        注意:正向代理服务不支持外不对内部网络的请访问求

     2、与正向代理相反,如果局域网向外网提供资源,让外网上的其他用户可以访问局域网内的资源,这时候可以设置一个代理服务器,而这个代理服务器它提供服务就叫做反向代理服务器

二、ngx_http_proxy_module模块常见指令解释:

         ngxhttpproxymodule模块允许将请求传递给另一个服务器

1、proxy_pass URL;

        该指令用于设置被代理服务器的协议、主机名、IP地址和端口等形式。

        Context: location, if in location, limit_except

        注意:proxy_pass后面的路径不带uri时,其会将locationuri传递给后端主机;

                 proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri;

                如果location定义其uri时使用了正则表达式的模式,或在if语句或limt_execept中使用proxy_pass指令,则proxy_pass之后必须不能使用uri; 用户请求时传递的uri将直接附加代理到的服务的之后;

   2proxy_set_header field value;

       设定发往后端主机的请求报文的请求首部的值;

       Context: http, server, location

       Field:要更改信息所在的头域

        Value:更改的值,支持使用文本、变量或者变量的组合

      示例:

        proxy_set_header X-Real-IP  $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

   3proxy_cache_path

       定义可用于proxy功能的缓存;Context: http

      proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size]… 

      levels:设置在对于path指定目录的第几级hash目录中缓存数据

      key_zone:Nginx服务器的缓存索引从简进程在内存中为缓存数据建立索引,用来定义放存缓存索引的内存区域的名称和大小

      inactive;表示缓存有效时间

      max_size:设置硬盘中缓存数据大大小

   4proxy_cache zone | off;

     指明要调用的缓存,或关闭缓存机制;

     Context: http, server, location

   5 proxy_cache_key string;

         缓存中用于“键”的内容;

         默认值:proxy_cache_key $scheme$proxy_host$request_uri;

   6proxy_cache_valid [code …] time;

        定义对特定响应码的响应内容的缓存时长;

      7、proxy_cache_use_stale

          用法:proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off …;

          如果Nginx在访问被代理服务器过程中出现被代理服务器无法访问或者访问错误等现象时,Niginx服务器可以使用历史缓存响应客户端的请求,这些数据不一定和被代理服务器上的最新的数据相一致,但对于更新频率不高的后端服务器来事,nginx服务器的该功能在一定程度上能够为客户端提供不间断访问

       8、proxy_cache_methods GET | HEAD | POST …;

          根据客户端请求报文请求方式,来选着需要缓存的数据

      9proxy_hide_header field;

          该指令用于设置nginx服务器在发送响应报文时,隐藏一些头信息

     10proxy_connect_timeout time;

          该指令来设定nginx服务器域后端被代理服务器尝试连接的超时时间。默认为60s;最长为75s;

     11proxy_read_timeout time;

          该指令设置nginx服务器向后端被代理服务器发出read请求后,等待响应的超时时间

     12proxy_send_timeout time;

          该指令设置nginx服务器向后端被代理服务器发出write请求后,等待响应的超时时间 

三、ngx_http_headers_module模块

     该模块:向由代理服务器响应给客户端的响应报文添加自定义首部,或修改指定首部的值;

   1add_header name value [always];

        添加自定义首部;

        add_header X-Via  $server_addr;

         add_header X-Accel $server_name;

  2expires [modified] time;

        expires epoch | max | off;

      用于定义Expire或Cache-Control首部的值;

四、配置反向代理服务lnamp

      实现lnamp: http, 提供wordpress;

     拓扑:

          Nginx之ngx_http_proxy_module模块详解

一、数据库配置(192.168109131

    1、安装数据库mariadb-server

yum install mariadb-server

     2、修改配置文件

        vim /etc/my.cnf.d/server.cnf

        Nginx之ngx_http_proxy_module模块详解

3、启动服务

               Nginx之ngx_http_proxy_module模块详解

          4、创建数据库(wordpress)并授权用户zq

              Nginx之ngx_http_proxy_module模块详解  

二、配置后端httpd服务(192.168.109.1

1、安装包

   Yum install httpd php php-mysql php-mbstring php-mcrypt(此包在epel仓库中)

2、定义虚拟主机

           Nginx之ngx_http_proxy_module模块详解

3.创建URL目录

          并在此目录下下载wordpress包解压

   Nginx之ngx_http_proxy_module模块详解 

4.创建wordpress包的配置文件

          Vim wp-config.php

          Nginx之ngx_http_proxy_module模块详解

      5、启动服务

         Systemctl start httpd.sevice

三、反向代理服务器配置(192.168.109.129)

1、安装包

  Yum install nginx

2、定义代理缓存路径

          Nginx之ngx_http_proxy_module模块详解

3、配置虚拟主机

           Vim  /etc/nginx/conf.d/vir.conf

           Nginx之ngx_http_proxy_module模块详解

 

     4、启动服务

         Systemctl start nginx.service

  四、测试

     输入http://www.zl.com/wordpress

        Nginx之ngx_http_proxy_module模块详解

    查看缓存

     Nginx之ngx_http_proxy_module模块详解

    看一看到能够正常缓存数据,站点配置正常

 

 

 

 

 

原创文章,作者:zq,如若转载,请注明出处:http://www.178linux.com/78494

(0)
zqzq
上一篇 2017-06-24 21:03
下一篇 2017-06-25 15:50

相关推荐

  • N25期—第四周作业

    1、 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp –rf /etc/skel /home/tuser1 chmod -R go= /home/tuser1 2、 编辑/etc/group文件,添加组hado…

    Linux干货 2016-12-26
  • 三台主机部署phpwind

    PHPWind(简称:PW)的使命是让网站更具价值,让更多人从网络中享受便利,以提升生活品质。 phpwind是一个基于PHP和MySQL的开源社区程序,是国内最受欢迎的通用型论坛程序之一。phpwind第一个版本ofstar发布于2004年。截止2013年12月phpwind项目品牌由阿里云计算有限公司拥有,软件全面开源免费。 特点 1. 非凡的访问速度 …

    2017-06-13
  • N21-北京-泥人-马哥教育网络班21期+第一周课程练习

    马哥教育网络班21期  第一周课程练习 一、计算机的组成 1、计算机主要由以下几部分组成:运算器 控制器 存储器(编址存储单元)、 输入、输出设备   2、运算器负责运算:只能做二进制的数学、逻辑运算, 控制器:控制由哪得到数据,放到哪去,协调运算器、存储器、输入、输出等设备 运算器、控制器整合到一起就是常说的中央处理器,也就是CPU。 …

    Linux干货 2016-07-12
  • 网络配置——路由配置实验

    一、实验环境: 4台虚拟主机,2台CentOS6.8主机做了R1路由器和PC1主机,2台CentOS7.2主机做了R2路由器和PC2主机,4台主机工作在桥接模式下 实验拓扑图: 二、网络配置: ·PC1的网卡配置; ·PC2的网卡配置; ·R1的网卡配置; ·R2的网卡配置; ·启用路由      &nbsp…

    Linux干货 2016-09-07
  • SecureCRT 8.0的安装及Linux基本命令介绍

    在CentOS虚拟中安装并打开图形界面后,可以在图形界面和命令行界面之间任意切换。在打开终端后输入init3可以切换至命令行界面,输入init5返回到图形界面。 这里我们用SecureCRT 8.0来远程的对虚拟机进行操作,对于SecureCRT 8.0的安装步骤就不详细介绍,简单介绍下如何连接到CentOS。 1. 2.点击完成。   &nbsp…

    2017-07-13
  • 运维学习笔记-Puppet之Hiera初探

    为什么使用Hiera? Puppet中的manifest同时包含静态的代码(判断/循环逻辑,依赖关系,类定义,资源类型定义等等)和动态的数据(类声明时的参数值和资源声明时的属性值)。说代码是静态的是因为如果在设计阶段考虑比较全面,代码写成之后是很少变化的。但是数据要根据具体情况赋予不同的值。如果manifest设计的不是很灵活,比如某些数据被固化(hardc…

    Linux干货 2016-07-07