在 nginx 中,proxy 用来实现反向代理,upstream 用来实现负载均衡。

例如有两台服务器,nginx 服务器作为代理服务器,执行 .html 文件,apache 服务器上执行 .php 文件,客户端发来的请求首先发送给 nginx 服务器,如果发送请求的是 .php 文件,则把请求通过 proxy pass 转发给 apache 服务器,apache 服务器处理后把结果返回给 nginx 服务器,nginx 服务再把结果返回给客户端。该例中 nginx 服务器实现了反向代理,或者说实现了 nginx + apache 的动静分离

配置过程:

① 首先不让 nginx 服务器执行 .php 文件,修改 /usr/local/nginx/conf/nginx.conf 文件,把以下 location 段注释:

        location ~ \.php$ {
#root html;
#fastcgi_pass 127.0.0.1:;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#include fastcgi_params;
}

保存退出。平滑重启 nginx。

此时访问 http://192.168.254.100/test.php:

nginx 已经不能解析 .php 文件了。

② 编辑 apache 的配置文件 httpd.conf

[root@localhost nginx]# find / -name httpd
/usr/local/apache2/bin/httpd
/root/httpd-2.2./httpd
/root/httpd-2.2./.libs/httpd
[root@localhost nginx]# vim /usr/local/apache2/conf/httpd.conf

修改监听端口(nginx 已经监听 80 端口,所以把 apache 的监听端口改为 8080):Listen 8080

保存退出。

③ 启动 apache:

[root@localhost nginx]# /usr/local/apache2/bin/apachectl start

访问 http://192.168.254.100:8080:

④ 配置 apache 的虚拟主机及端口:

[root@localhost nginx]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 

修改 httpd-vhosts.conf:

NameVirtualHost *:

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:>
DocumentRoot "/usr/local/nginx/html"
ServerName test.com
</VirtualHost>

把 DocumentRoot 定义到 /usr/local/nginx/html 目录下。保存退出。

编辑 httpd.conf:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

改为

<Directory />
Options FollowSymLinks
AllowOverride all
Order deny,allow
Allow from all
</Directory>

把 line:151

AllowOverride None

改为

AllowOverride All

保存退出。重启 apache。

⑤ 测试:访问 http://192.168.254.100:8080

访问 http://192.168.254.100:8080/ecshop/

⑥ 配置 nginx 的反向代理

[root@localhost nginx]# vim conf/nginx.conf

nginx.conf,修改 location ~ \.php$,只需要添加一句:proxy_pass 192.168.254.100:8080;

        location ~ \.php$ {
proxy_pass http://192.168.254.100:;
#root html;
#fastcgi_pass 127.0.0.1:;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#include fastcgi_params;
}

保存退出。平滑重启 nginx。

测试动静分离:此时访问 http://192.168.254.100/test.php

也就是说,此时的 url 不带 8080 端口,访问 .php 文件,同样能够解析,而且是通过 apache 进行解析。

测试动静分离 2:

修改 /usr/local/nginx/html/test.php

[root@localhost nginx]# vim html/test.php 

test.php:

<?php
//phpinfo();
echo rand(,);
?>
<img src='image/nginx.png'>

保存退出。

再次访问 http://192.168.254.100/test.php

此时分析 apache 日志:

[root@localhost nginx]# tail -f /usr/local/apache2/logs/access_log 

access.log:

apache 没有响应图片。

再分析 nginx 日志:

[root@localhost nginx]# tail -f /usr/local/nginx/logs/access.log 

nginx 响应的图片。

Nginx 笔记与总结(15)nginx 实现反向代理 ( nginx + apache 动静分离)的更多相关文章

  1. 【nginx网站性能优化篇(2)】反向代理实现Apache与Nginx的动静分离(LNMPA)

    为什么要使用反向代理 具体请参考这篇博文:[Linux常识篇(1)]所谓的正向代理与反向代理 在虚拟机上配置反向代理的步骤 首先假设你已经假设好了LNMP架构了,这时我们还要安装Apache和php, ...

  2. nginx配置文件(反向代理+集群+动静分离)

    1.nginx纯反向代理配置(nginx.conf): #user nobody;worker_processes 4;error_log logs/error.log info;pid logs/n ...

  3. 15 nginx反向代理实现nginx+apache动静分离

    一:nginx反向代理实现nginx+apache动静分离-------------概念--------------------------- nginx反向代理服务器+负载均衡 用nginx做反向代 ...

  4. Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡

    文章目录 nginx gzip压缩提升网站速度 expires缓存提升网站负载 反向代理实现nginx+apache动静分离 nginx实现负载均衡 nginx gzip压缩提升网站速度 网页内容的压 ...

  5. nginx反向代理nginx,RealServer日志打印真实ip

    title: nginx反向代理nginx,RealServer日志打印真实ip date: 2016-05-11 19:15:37 tags: --- nginx反向代理nginx,RealServ ...

  6. nginx 反向代理 与 Apache backend的配置联合配置

    nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1.  设置域名, 子域名映射到指定服务器ip ...

  7. nginx在使用非80端口做反向代理【转】

    设置nginx反向代理,nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 upstream jboss{ server max_fails= fail_timeout=20s; s ...

  8. 生产环境中nginx既做web服务又做反向代理

    一.写对于初入博客园的感想 众所周知,nginx是一个高性能的HTTP和反向代理服务器,在以前工作中要么实现http要么做反向代理或者负载均衡.尚未在同一台nginx或者集群上同时既实现HTTP又实现 ...

  9. 【nginx网站性能优化篇(3)】反向代理实现负载均衡

    注意,本篇文章为负载均衡的理论篇,后续找个机会推出实战篇.理论篇主要讲述如何配置负载均衡,配置负载均衡不难.难的是真正的实战,比如如何做到多服务器之间的数据共享(session,file等),多cac ...

随机推荐

  1. Fedora install chrome

    1)下载chrome:chrome download,选择rpm版,下载地址:https://dl.google.com/linux/direct/google-chrome-stable_curre ...

  2. javascript中json解密

    一直以前都会断断续续会碰到js中的json数据的解析,下面凭着自己的经验,简单的讲解一下在js中的json的几种解析方法.  一.jquery的方式 首先你得先得到数据,一般都是jquery的ajax ...

  3. l中断的实现

    转自:http://blog.chinaunix.net/uid-25014876-id-90740.html xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  4. UVa 11991:Easy Problem from Rujia Liu?(STL练习,map+vector)

    Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for example, ...

  5. Java Hour 39 Maven ( 1 )

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 39 Maven 1 Perhaps you are running ...

  6. Android开发规范——命名 (转)

    转自: http://blog.sina.com.cn/s/blog_3f5dd7810101j4u2.html 在讲解命名规范前,先初略介绍下当前主要的标识符命名法和英文缩写规则. 标识符命名法 标 ...

  7. Android之SurfaceView学习(一)

    对应的中文翻译SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface.你可以控制这个Surface的格式和尺寸.Surfaceview控制这个Surface ...

  8. sql2005 将一列的多行内容拼接成一行

    select ID, Name = ( stuff ( ( select ',' + Name from Table_1 where ID = a.ID for xml path('') ),1,1, ...

  9. 安卓智能手持POS打印票据 扫描盘点移动开单软件/无线开单系统/PDA移动开单软件

    移动开单手持机,它通过WIFI或者GPRS连接并访问电脑数据,实现移动扫描开单,数据同步上传等功能.方便.实用,大大提高工作效率!安卓智能手持POS是一套适合大酒店.咖啡馆..洗衣店.按摩洗浴,商场等 ...

  10. 餐厅到店点餐系统app燃尽图

    队友: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...