Nginx 笔记与总结(15)nginx 实现反向代理 ( nginx + apache 动静分离)
在 nginx 中,proxy 用來(lái)實(shí)現(xiàn)反向代理,upstream 用來(lái)實(shí)現(xiàn)負(fù)載均衡。
例如有兩臺(tái)服務(wù)器,nginx 服務(wù)器作為代理服務(wù)器,執(zhí)行 .html 文件,apache 服務(wù)器上執(zhí)行 .php 文件,客戶端發(fā)來(lái)的請(qǐng)求首先發(fā)送給 nginx 服務(wù)器,如果發(fā)送請(qǐng)求的是 .php 文件,則把請(qǐng)求通過(guò) proxy pass 轉(zhuǎn)發(fā)給 apache 服務(wù)器,apache 服務(wù)器處理后把結(jié)果返回給 nginx 服務(wù)器,nginx 服務(wù)再把結(jié)果返回給客戶端。該例中 nginx 服務(wù)器實(shí)現(xiàn)了反向代理,或者說(shuō)實(shí)現(xiàn)了 nginx + apache 的動(dòng)靜分離。 ?
?
配置過(guò)程:
① 首先不讓 nginx 服務(wù)器執(zhí)行 .php 文件,修改 /usr/local/nginx/conf/nginx.conf 文件,把以下 location 段注釋:
location ~ \.php$ {#root html;#fastcgi_pass 127.0.0.1:9000;#fastcgi_index index.php;#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#include fastcgi_params;}保存退出。平滑重啟 nginx。
此時(shí)訪問(wèn)?http://192.168.254.100/test.php:
nginx 已經(jīng)不能解析 .php 文件了。
?
② 編輯 apache 的配置文件?httpd.conf
[root@localhost nginx]# find / -name httpd /usr/local/apache2/bin/httpd /root/httpd-2.2.21/httpd /root/httpd-2.2.21/.libs/httpd [root@localhost nginx]# vim /usr/local/apache2/conf/httpd.conf修改監(jiān)聽(tīng)端口(nginx 已經(jīng)監(jiān)聽(tīng) 80 端口,所以把 apache 的監(jiān)聽(tīng)端口改為 8080):Listen 8080
保存退出。
?
③ 啟動(dòng) apache:
[root@localhost nginx]# /usr/local/apache2/bin/apachectl start?
訪問(wèn)?http://192.168.254.100:8080:
?
?
④ 配置 apache 的虛擬主機(jī)及端口:
[root@localhost nginx]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf?修改 httpd-vhosts.conf:
NameVirtualHost *:8080# # 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 *:8080>DocumentRoot "/usr/local/nginx/html"ServerName test.com </VirtualHost>把 DocumentRoot 定義到 /usr/local/nginx/html 目錄下。保存退出。
?
編輯?httpd.conf:
把
<Directory />Options FollowSymLinksAllowOverride NoneOrder deny,allowDeny from all </Directory>改為
<Directory />Options FollowSymLinksAllowOverride allOrder deny,allowAllow from all </Directory>?
把 line:151
AllowOverride None改為
AllowOverride All保存退出。重啟 apache。
?
⑤ 測(cè)試:訪問(wèn)?http://192.168.254.100:8080
?
?
訪問(wèn)?http://192.168.254.100:8080/ecshop/
?
?
?
⑥ 配置 nginx 的反向代理
[root@localhost nginx]# vim conf/nginx.confnginx.conf,修改 location ~ \.php$,只需要添加一句:proxy_pass 192.168.254.100:8080;
location ~ \.php$ {proxy_pass http://192.168.254.100:8080;#root html;#fastcgi_pass 127.0.0.1:9000;#fastcgi_index index.php;#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#include fastcgi_params;}?保存退出。平滑重啟 nginx。
?
測(cè)試動(dòng)靜分離:此時(shí)訪問(wèn)?http://192.168.254.100/test.php
也就是說(shuō),此時(shí)的 url 不帶 8080 端口,訪問(wèn) .php 文件,同樣能夠解析,而且是通過(guò) apache 進(jìn)行解析。
?
測(cè)試動(dòng)靜分離 2:
修改 /usr/local/nginx/html/test.php
[root@localhost nginx]# vim html/test.phptest.php:
<?php //phpinfo(); echo rand(1,100000); ?> <img src='image/nginx.png'>保存退出。
?
再次訪問(wèn)?http://192.168.254.100/test.php
此時(shí)分析 apache 日志:
[root@localhost nginx]# tail -f /usr/local/apache2/logs/access_logaccess.log:
apache 沒(méi)有響應(yīng)圖片。
?
再分析 nginx 日志:
[root@localhost nginx]# tail -f /usr/local/nginx/logs/access.lognginx 響應(yīng)的圖片。
?
總結(jié)
以上是生活随笔為你收集整理的Nginx 笔记与总结(15)nginx 实现反向代理 ( nginx + apache 动静分离)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 拿什么来拯救你,我的table
- 下一篇: Nginx配置文件nginx.conf