ceonts6.8 nginx做前端代理apache做后端服务架构配置

本文介绍了如何利用Nginx作为前端代理,Apache作为后端服务的架构配置,以实现高并发性能和稳定动态页面处理。这种架构结合了Nginx的静态文件高效响应和Apache的PHP脚本处理优势,有效解决了FastCGI运行PHP时可能出现的502错误和Apache处理静态页面负载过高的问题。

Apache 和 Nginx 说是当今最流行的两个 Web 服务器一点也不为过,Apache 用户基数大,稳定,兼容性高(比如jsp/php/cgi/python等等),但与 Ngnix 相比,Apache过于臃肿以及对静态文件响应过于缓慢让很多使用者感到头疼,而 Nginx 对于高并发性能出众,Proxy 功能强效率高,占用系统资源少。

但是 Nginx 也有劣势,它在处理 php 脚本时需要通过 php-fpm(FastCGI) 解析,而 php-fpm 不够稳定,经常出现 502 错误,生成相对复杂的页面没有优势,反而会使 php-cgi 进程变为僵尸进程。而 Apache 在高并发时对队列的处理比 FastCGI 更好,并且在处理动态 php 页面时,mod_php 模块也比 php-cgi 模块更稳定更高效。

事实上很多大型的网站都是采用 Nginx 前端 + Apache 后端的服务器架构,这样可以很好地结合了 Nginx 高并发和静态页面高效率以及 Apache 稳定的动态页面处理特点,再也不用担心 Nginx 以 FastCGI 模式运行 PHP 时的502问题和 Apache 处理静态页面过慢、负载过高的问题。

反向代理过程:

 Nginx前端,Apache后端过程其实很简单,首先用户访问的是80端口的nginx,然后nginx将静态内容留给自己,其余的转发给非80端口的apache,apache处理完毕后再回传给nginx。
  1. LMAP环境安装

    1.安装Apache
    
        # yum -y install httpd
    2.安装完成之后打开httpd的配置文件
        # vi /etc/httpd/conf/httpd.conf
    3.把ServerName前的#去掉,并修改为ServerName localhost 保存后启动httpd
        # service httpd start
    4.然后访问一下自己的服务器的ip会看到如下Apache的欢迎页    

这里写图片描述

    5.安装MySQL
        #yum install -y mysql mysql-server
    6.安装完成以后启动mysql
        #service mysqld start
    7.结下来初始化mysql设置账号密码
        mysql> select user,host,password from mysql.user;  #查询mysql的user表

        mysql> drop user ''@localhost;

        mysql> update msyql.user set password = PASSWORD('your_password') where user="root"; #更改root密码

        mysql> flush privileges; #重新加载一下权限
    8.安装PHP
        # yum -y install php
        # yum -y install php-mysql
    9.安装以后重新启动Apache,之后在默认的网站根目录添加个phpinfo.php 文件测试下.
        # service httpd restart
    10.设置开机启动项
        # chkconfig httpd on
        # chkconfig mysqld on
    11.安装 Nginx 和 PHP-FPM(FastCGI)   !此步骤接上,为了避免冲突,先关闭 Apache:
        # service httpd stop
    12.默认情况下,CentOS 官方 rpm 源是没有 nginx 安装包的,需要手动添加,
        # cd /etc/yum.repos.d/
        # vi nginx.repo
    13.往 nginx.repo 文件里添加如下代码:
        [nginx]
        name=nginx repo
        baseurl=http://nginx.org/packages/centos/$releasever/$basearch
        gpgcheck=0
        enabled=1
    14.保存后,即可开始安装 Nginx,
        # yum -y install nginx
    15.安装结束后,启动 Nginx,记得先关闭 Apache: service httpd stop,否则会出现冲突,
        # service nginx start
    16.浏览器访问一下会出现nginx的欢迎页面.

    17.接下来安装 php-fpm 并启动它,用来解析 PHP 脚本,
        # yum -y install php-fpm
        # service php-fpm start
    18.编辑 Nginx 的默认配置文件 default.conf,
        # vi /etc/nginx/conf.d/default.conf
    19. 把 default.conf 文件中 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 这一行下面的 # 注释去掉,并修改 root 后面的目录为:/usr/share/nginx/html;(此目录为 Nginx 的默认网站目录),修改 SCRIPT_FILENAME 后的参数为:$document_root$fastcgi_script_name; 修改结果如

这里写图片描述

    20.保存退出后,重启 Nginx,
        # service nginx restart
    21.同样nginx也在默认的页面写个phpinfo看一下

这里写图片描述

    22.注意红框内与上述通过 Apache 解析 phpinfo.php 的区别,此处显示,这里 phpinfo.php 文件是由 FPM/FastCGI 模块解析的。
    设置开机启动项
        # chkconfig nginx on
        # chkconfig php-fpm on
    23.至此,LNMP 环境安装完成!

    24.打开编辑 Nginx 的默认配置文件:
        # vi /etc/nginx/conf.d/default.conf
    25.注释掉之前 FastCGI 监听的配置,并添加如下代码:
        # proxy the PHP scripts to Apache listening on 127.0.0.1:8080
        location ~ \.php$ {
            proxy_pass    http://127.0.0.1:8080
        }
即当 Nginx 接收 http 请求遇到需要解析 php 脚本时,则交给 127.0.0.1:8080 端口来处理,而我们等下配置让 Apache 来监听处理这个端口发来的请求。
最终 Nginx 的配置文件 default.conf 如下,此处保留 Nginx 的默认网站目录 /var/share/nginx/html 不变,可自行修改。   

这里写图片描述

26.接下来打开编辑 Apache 的配置文件:
        # vi /etc/httpd/conf/httpd.conf
27.找到 Listen 字段,并改为:Listen 127.0.0.1:8080,让 Apache 来监听这个端口,修改 Apache 的网站根目录为:”/usr/share/nginx/html”,与上述 Nginx 对应的网站目录保持一致,具体的修改细节如下加粗文字所示:
        Listen 127.0.0.1:8080
            ...
        ServerName localhost
            ...
        DocumentRoot "/usr/share/nginx/html"
            ...
        <Directory "/usr/share/nginx/html">
            ...
        </Directory>
            ...
28.保存退出编辑,重启 Nginx 服务,并启动 Apache 服务,并确保这两个服务开机自启:
        # service nginx restart
        # service httpd start
        # chkconfig nginx on
        # chkconfig httpd on
29.借助于谷歌浏览器的工具我们可以发现,当浏览器向服务器发起 http://192.168.211.132/phpinfo.php 这个 HTTP 请求时,是由 Nginx 接收的,当 Nginx 发现需要处理 PHP 脚本时,则通过 127.0.0.1:8080 端口交给 Apache 处理,PHP 的输出信息也显示了 phpinfo.php 脚本正是由 Apache 2.0 Handler 解析处理的。

30.至此,LNMP + Apache 架构配置完成!
<think>好的,用户想配置Nginx作为负载均衡器,使用Apache作为后端服务器。我需要根据提供的引用信息来整理步骤。首先,引用[1]提到Nginx可以作为反向代理和负载均衡器,而引用[2]里有具体的负载均衡配置示例。用户可能已经安装了Nginx,但需要确认后端Apache服务器的运行情况,比如端口是否正常。然后,配置Nginx的upstream模块,设置后端服务器地址,比如Apache的IP和端口,可能需要使用轮询或ip_hash方法。引用[4]解释了负载均衡的定义,所以需要确保配置正确分摊请求。接着,在server块里配置proxy_pass指向upstream名称。还要考虑是否需要启用proxy_cache,引用[3]说明如果配置了proxy_cache,请求可能直接从缓存响应,这可能影响动态内容,所以要根据实际情况决定。另外,引用[5]提到负载均衡模块类型,可能需要检查Nginx是否包含相关模块。用户可能还需要测试配置,重启Nginx服务,并验证负载均衡是否生效。最后,生成相关问题时要覆盖负载均衡算法、优化、会话保持和缓存配置等方面。</think>### 配置Nginx负载均衡与Apache后端协同工作的步骤 #### 1. **基础环境准备** - **确保Apache后端服务器已启动** 假设Apache运行在默认端口`80`或自定义端口(如`8080`),需确认其服务状态及端口监听: ```bash systemctl status apache2 # 检查Apache运行状态 netstat -tpln | grep 80 # 确认端口监听情况 ``` - **Nginx安装与启动** 参考引用[^2],若已安装Nginx,可通过脚本启动服务: ```bash cd /data/startup && ./a1-start-Nginx.sh ``` #### 2. **配置Nginx负载均衡** - **编辑Nginx配置文件** 进入Nginx配置目录,修改`nginx.conf`: ```bash cd /usr/local/nginx/conf && vi nginx.conf ``` - **定义后端服务器组** 在`http`块中添加`upstream`定义,指向Apache服务器的IP和端口。例如轮询策略: ```nginx upstream apache_servers { server 192.168.1.101:80 weight=1; # Apache服务器1 server 192.168.1.102:80 weight=1; # Apache服务器2 } ``` 若需会话保持,可使用`ip_hash`(引用[^2]): ```nginx upstream apache_servers { ip_hash; server 192.168.1.101:80; server 192.168.1.102:80; } ``` #### 3. **配置反向代理转发** 在`server`块中添加`location`规则,将请求代理后端Apache集群: ```nginx server { listen 80; server_name your_domain.com; location / { proxy_pass http://apache_servers; # 指向upstream名称 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` #### 4. **可选缓存配置** 若需静态资源缓存,可添加`proxy_cache`配置(引用[^3]): ```nginx proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m; location / { proxy_cache my_cache; proxy_pass http://apache_servers; proxy_cache_valid 200 302 10m; # 根据后端响应头动态缓存 } ``` #### 5. **验证与重载配置** - **检查语法错误** ```bash nginx -t ``` - **重启Nginx服务** ```bash nginx -s reload ``` #### 6. **测试负载均衡效果** - 通过浏览器或`curl`多次访问Nginx服务器IP,观察请求是否分发到不同Apache后端。 - 检查Apache访问日志确认请求分布: ```bash tail -f /var/log/apache2/access.log ``` --- ### 关键配置说明 | 配置项 | 作用 | 参考来源 | |--------------------|----------------------------------------------------------------------|------------------| | `upstream` | 定义后端服务器集群,支持轮询、权重、IP哈希等策略 | [^2][^4][^5] | | `proxy_pass` | 将请求转发至后端服务器组 | [^3] | | `ip_hash` | 实现会话保持,同一客户端IP固定访问同一后端 | [^2][^4] | | `proxy_cache` | 缓存后端响应,减少重复请求对Apache的压力 | | --- ### 常见问题与优化建议 1. **性能瓶颈** - Nginx处理静态资源,Apache处理动态请求(如PHP),通过分工提升效率[^1]。 2. **会话一致性** - 若未使用`ip_hash`,需通过Redis等外部存储实现Session共享。 3. **健康检查** - 添加`max_fails`和`fail_timeout`参数,自动隔离故障节点: ```nginx server 192.168.1.101:80 max_fails=3 fail_timeout=30s; ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值