在 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. ASP.NET Web.Config 读写辅助类

    using System; using System.Configuration; using System.Web; using System.Web.Configuration; namespac ...

  2. oracle中merge的详解

    Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的 ...

  3. Sql server之路 (五)插入多条数据

    public bool GetDataUsingDataTaskReason(StationReasonCollection reason) { try { strCon.Open(); DateTi ...

  4. SharedPreferences(转)

    [功能] 大家在android开发中 一点有这样的需求 就是需要保存一下与该程序有关的属性设置的问题 比如:window xp 中 <假设系统盘为 C:/> 的位置为: C:\Progra ...

  5. 作用域与闭包:this,var

    var 作用域 先来看个简单的例子: var parent = function () { var name = "parent_name"; var age = 13; var ...

  6. 利用SQL语句查询一个数据库中的所有表

    SQL  :  select * from information_schema.tables ORACLE: select table_name from user_tables ACCESS: s ...

  7. ember.js:使用笔记4 数组数据的分组显示

    除了之前介绍的将数组数据在一个页面中输出的方法,还可以将数组数据分组,按照点击,在不同页面中分别显示,方法为: Model: 例如:Table Router: 设置一个父对象和子对象设置: this. ...

  8. ArduinoYun的电源插座

    ArduinoYun的电源插座 Arduino Yun有两排插座,这些插座可以按类型分为三类:电源.数字IO和模拟输入.电源部分主要集中在如图1.7所示的部分本文选自Arduino Yun快速入门教程 ...

  9. 模拟 ZOJ 3736 Pocket Cube

    题目传送门 题意:魔方最多旋转n次,问最多能使多少面颜色相同 分析:6种状态(3种旋转方式*顺逆方向,其他对称的!),首先先打个表,然后很愉快的DFS.自己写的时候费劲脑汁,代码很长,还TLE了... ...

  10. HDU1667 : The Rotation Game

    考虑枚举最后中间的数字,然后可以用一个24位的整数来表示一个状态,一共有C(24,8)=735471种状态,然后BFS即可. 比赛的时候由于手速问题没写完TAT 写完后在坑爹评测机上还是TLE. 所以 ...