• Nginx反向代理到apache


    构想:Apache负责php页面,nginx负责视频文件等静态页面

    单台服务器,目前只有一个ip,那就采用不同的端口号,apache监听80端口,基本上不需要改变什么,只需要把视频文件拷贝到nginx下面的文件下,然后开启反向代理功能,反向代理就是:此模块能代理请求到其它服务器. 也就是把视频文件反向代理到apache下面:


    1:开启反向代理服务

    反向到80端口

    还可以添加下列参数:

    proxy_set_header Host $host;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header REMOTE-HOST $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


    ⑵监听8888端口



    可以参考一篇很不错的类似文章:http://liuyu.blog.51cto.com/183345/166381

    ***********************************************************************

    Nginx反向到apache可能会出现的问题:

    ⑴第一获得真实ip会一直都是nginx的:

    Apache端:

    #vim httpd.conf

    LoadModule rpaf_module  modules/mod_rpaf-2.0.so

    #vim httpd-vhosts.conf

    在虚拟主机里加上

    RPAFenable On

    RPAFproxy_ips 192.168.1.100

    RPAFsethostname On

    RPAFheader X-Forwarded-For

    Nginx端已经在proxy.conf里定义了

    详细解决办法参考;http://windphp.com/unix/52.html 

    ⑵session丢失

    Nginx简单轮训会导致session丢失,面对这种问题,一种可以将nginx调度算法换为ip_hash,这样负载的作用将没有意义,另一种可将session存在memcache…..

    #vim /usr/local/php/lib/php.ini

    修改为

    session.save_handler = memcache

    session.save_path = "tcp://IP:11211"

    *************************************************

    Hostsliunxwin下面都有,主要功能就是把域名定向到指定ip上,并且程序里面的出现域名的地方也会指向指定ip. 

    Win下面:C:\WINDOWS\system32\drivers\etc\HOSTS

    Liunx下面:etc/hosts

    ======================================================

    只要保证nginx和apache两端口不冲突两服务器就可以并存

     【对以上不足的补充】

    一个典型的 Nginx + Apache 应用方案可以是Nginx 占用 80 端口,过滤静态请求,然后动态请求即 Proxy 到 Apache 的 8080 端口。Proxy 反向代理的好处是访问的时候,始终就是 80端口,来访者不会觉察到有任何的区别。

    但有的应用确非常“聪明”,识别到 Apache 所位于的端口是 8080 ,就会把相关的超链接都一并加上 :8080 的后续。这么就死定了,还能有正常访问麽?!有个方法可以解决这事,就是把 apache 也运行在80端口上。
    同一台服务器,有Nginx 也有 Apache,2个httpd服务,都是80,不会冲突麽?

    下边就是举例方法。
    Nginx.conf 的配置中
    server {
    listen 80;
    server_name www.ABC.com;

    root /var/www

    }
    修改一下。
    server {
    listen 公网IP123.123.123.123:80; #指定Nginx只占用某个IP的80端口。#如果你服务器中有多个IP,还可以指定多个。
    server_name www.ABC.com;
    }
    如果你在Nginx有多个虚拟主机,每一个都需要这么修改。

    -----------------------------------------------------------------------------------------------------------------
    然后轮到 apache 的 httpd.conf
    把原来的
    Listen 80
    改为
    Listen 127.0.0.1:80
    跟Nginx一样,指定apache所占用的IP及端口。
    保存退出,重启apache即可生效。
    如果你 apache 上也有多个虚拟主机。无需好像Nginx那样逐一修改,只要都是 80 端口既可。
    如:
    NameVirtualHost *:80
    ServerAdmin hello@abc.com
    DocumentRoot /var/www/admin
    ServerName admin.ABC.com
    老李批注:这里用管理后台域名绑定后台目录,类似manager.***.com

    (这样,恐怕apache只能通过http://127.0.0.1:80才能访问,那么他还占用80端口就没有意义了。还不如apache用8080,nginx用80算了。没有认真看,有“聪明” 的应用检测到apache使用的是8080端口,会把应用里头所有的超链接都加上:8080结尾,为了解决该问题,所以才有这一文。而且多数服务器都具备2张网卡,除了把apache绑定在 127.0.0.1 还能绑定另外一张网卡的IP,这么问题就解决。)

    这样,Nginx 跟 Apache 就仅会占用指定IP的80端口,不会冲突。
    只要调整一下 Nginx proxy 的参数。
    “聪明”应用问题就能解决了。


  • 相关阅读:
    WordPress 常用的动作钩子
    wordpress的过滤器
    实战haslayout(实战篇)!
    wordpress函数描述之一——WordPress add_theme_support() 函数
    一些闲言碎语,好记星不如烂笔头(一)
    实战haslayout(理论篇)!
    WordPress的钩子函数之一——do_action()
    IE6变态bug总结非常好!没有错误
    Javascript参考博客
    SilverLight遍历父子控件的通用方法
  • 原文地址:https://www.cnblogs.com/y0umer/p/2809608.html
Copyright © 2020-2023  润新知