注意,上次我们只是简单的在同一台服务器模拟搭建了一个新的http服务器(启用了8080端口),使用的是apache,从而模拟了多台服务器实现的Nginx反向代理,通过Nginx向上游代理服务器发送请求。

这一次对Nginx反向代理做出具体的配置,按照《Mastering Nginx》推荐

首先

sudo su        //root模式

cd /etc/nginx/

touch ./proxy.conf        //新建一个单独的代理配置

vim ./proxy.conf

如下:

#Mastering Nginx
#关闭重定向
proxy_redirect off;
#传递给上游服务器用户头信息
proxy_set_header Host $http_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;
#Nginx等待时间
proxy_connect_timeout ;
#Nginx与上游服务器两次操作成功等待时间
proxy_send_timeout ;
proxy_read_timeout ;
#这些缓冲控制了Nginx如何快速响应用户请求
proxy_buffer_size 4k;
proxy_buffers 32k;
proxy_busy_buffers_size 64k;
#控制worker进程阻塞后台数据的时间,值越大,处理阻塞时间越长
proxy_temp_file_write_size 64k;

然后

vim ./sites-available/default        //编辑默认站点配置文件

location ~ ^/apache {
include proxy.conf;
proxy_pass http://localhost:8080;
}

service nginx reload         //重读nginx

注意:如果nginx reload提示failed,请查看/var/log/nginx/error.log错误日志!

接下来尝试把上游服务器作为uploads目录,专门存放用户上传的文件。

vim /etc/nginx/sites-available/default

 include proxy.conf;
location /uploads {
client_max_body_size 500m;
proxy_connect_timeout ;
proxy_send_timeout ;
proxy_read_timeout ;
proxy_pass http://localhost:8080;
} location / {
index index.htm index.html index.php;
#如果文件不存在则尝试TP解析
#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
if (!-e $request_filename)
{
#地址作为将参数rewrite到index.php上。
rewrite ^/(.*)$ /index.php/$;
}
}

注意把proxy.conf包含在location外部,然后内部覆盖原有的配置,否则会提示“directive is duplicate”。

再次访问:www.gxy.gift/uploads

apache将会代理存储文件的访问

接下来讲解反向代理中结合try_files使用技巧:

在《Mastering Nginx》一书中提到这段代码的作用:

location / {
try_files $uri @apache;
} location @apache {
proxy_pass http://localhost:8080;
}

这段配置非常简单,简单说:请求发送给Nginx服务器后,按照请求的文件或者路由活取nginx的文件,从而呈现出静态页面,但是如果Nginx找不到这样的地址文件或者无法路由,就会把地址直接丢给上游的@apache

总结:所谓web反向代理服务,要注意代理服务器使用过程中是直接把域名后面的这一段请求,也就是$uri发送到上游服务器,在这儿是apache,相当于用户直接请求了apache服务器的效果,如果apache服务器也不能处理这段请求,那么将会显示apache的not found提示。

nginx与apache配合反向代理技术2的更多相关文章

  1. nginx与apache配合反向代理技术1

    序:最近在看Dimitri Aivaliotis的<Mastering Nginx>,刚好跆拳道课下班在路上看了反向代理服务器,准备在自己的博客VPS尝试一下 web代理服务器可以实现分布 ...

  2. Nginx或Apache通过反向代理配置wss服务

    nginx配置参考 前提条件及准备工作: 1.假设ws服务监听的是8282端口(websocket协议) 2.已经申请了证书(pem/crt文件及key文件)放在了/etc/nginx/conf.d/ ...

  3. 使用nginx和tomcat配置反向代理和动静分离

    背景 本人主修的编程语言是Java语言,因此最开始接触的Web开发也是JSP技术.使用Java开发的Web应用需要部署在专门的服务器程序上运行,比如Tomcat.但是一般很少会有人将Tomcat作为用 ...

  4. 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步

    一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...

  5. APACHE 与IIS同时存在的情况下,给APACHE添加反向代理 共用80端口

    一.首先打开IIS,将IIS的端口改成81,不要让IIS占用了80端口 二.打开APACHE的httpd.conf配置文件,将里面的端口配置成80 三.打开APACHE的虚拟目录配置文件,如:http ...

  6. apache做反向代理

    实验目的 通过apache实现反向代理的功能,类似nginx反向代理和haproxy反向代理 环境准备 逻辑架构如下 前端是apche服务器,监听80端口,后端有两台web服务器,分别是node1和n ...

  7. Nginx插件之openresty反向代理和日志滚动配置案例

    Nginx插件之openresty反向代理和日志滚动配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.openresty介绍 1>.Nginx介绍 Nginx是一款 ...

  8. 【架构师之路】Nginx负载均衡与反向代理—《亿级流量网站架构核心技术》

    本篇摘自<亿级流量网站架构核心技术>第二章 Nginx负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台.几十台.几百台.然而,用 ...

  9. Apache 如何反向代理tomcat并且实现Session保持

    简介 LAMT=Linux+Apache+MySQL+Tomcat: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器: 在中小型系统和并发访问用户不是很多的场合下 ...

随机推荐

  1. Thrift序列化与反序列化的实现机制分析

    Thrift是如何实现序死化与反序列化的,在IDL文件中,更改IDL文件中的变量序号或者[使用默认序号的情况下,新增变量时,将新增的变量不放在IDL文件的结尾,均会导致Thrift文件的反序列后无法做 ...

  2. El表达式的用法个人总结

    EL表达式的好处: 通过EL可以简化在JSP开发中对对象的引用,从而规范页面代码,增加程序的可读性及可维护性. EL表达式的几个特点:  1:可以与jsp标签库结合使用,也可以与javascript语 ...

  3. 【树莓派】h2数据库操作相关

    之前在树莓派上面操作时候,遇到一些业务方面的bug,和团队中的同事经过多次尝试,但就是难以重现用户现场的问题. 但是问题却实实在在地发生,虽然并不是必然可重现的bug,但是也比较闹心: 发生了问题,也 ...

  4. 查看某个ip地址接在交换机的哪个接口

    show ip interface brief 1.如果交换机上没有做VLAN 可以直接使用:show arp MPG3560#sh arp Protocol Address Age (min) Ha ...

  5. 微信JS图片上传与下载功能--微信JS系列文章(三)

    概述 在前面的文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的图片上传功能进行描述,供大家参考. 图片上传 $(function(){ v ...

  6. iOS开发之左右抖动效果

    CAKeyframeAnimation *shakeAnim = [CAKeyframeAnimation animation]; shakeAnim.keyPath = @"transfo ...

  7. linux之date命令详解

    date命令的用处 1.用于显示特殊的时间格式,可以用于对日志文件的命名 2.用于设置时间 ,不过这方面用的比较少,因为一般的服务器都设置的有自动同步网络时间 用法: date [OPTION]... ...

  8. window.onload 和 $(document).ready(function(){})的区别

    这篇作为我的新的起点开始吧,发现年纪大了,记性就不好了,有些东西老是记了忘,忘了百度.在学一些新知识的时候也是这样的毛病,总是重复学习,这样效率真心差!所以决定开始认真写博客! 本来想封装一个预加载的 ...

  9. ATL dll注册失败

    “生成”->“生成解决方案”或“重新生成解决方案”,在注册时,报错:regisvr32 /r/c " C:\Users\Administrator\Desktop\复件DrvWater ...

  10. SQL case when 的使用总结

    在网上看到一篇关于case when语句的博客,写得很好,我这里是摘录的,还有我的一些体会,原博客地址:SQL Case when 的使用方法. Case具有两种格式.简单Case函数和Case搜索函 ...