nginx+apache 做动静分离,遭遇 PHP 版本不同,何解?

2017-04-07 15:37:29 +08:00
 Yourdaye

看 V 友提到做动静分离可以提供效率,然后去试了一下,看了很多教程,然而一直出错,偶然发现原来是 PHP 版本不同导致的! WTF!

在 nginx 下, php 版本是 5.4 ,在 Apache 下, php 版本是 5.2 ,而且 PHP 的配置 TM 还不一样

那么问题来了,怎样它俩绑定到同一个 PHP 版本下?

1617 次点击
所在节点    问与答
13 条回复
fengyqf
2017-04-07 18:26:13 +08:00
既然动静分离,为什么 Apache 跟 Nginx 都处理 PHP 请求?好奇你的动静是按什么条件分离的。
imyip
2017-04-07 18:30:46 +08:00
动静分离难道不是,静态请求交给 nginx 处理,动态请求交给 apache 么,所以应该是 apache 处理 php 吧
ivmm
2017-04-07 18:56:23 +08:00
Nginx 80/443 反代 Apache Httpd 8088 , Httpd 用 mod_PHP 处理 PHP 或者 fastcgi 加载 PHP-FPM
Love4Taylor
2017-04-07 20:09:29 +08:00
难道不是非 PHP 文件直接由 Nginx 处理 PHP 文件反代给 Apache ?
param
2017-04-07 20:15:13 +08:00
不是很懂。。 Apache 和 Nginx 分别处理静态文件和 PHP 的好处是什么。。
Yourdaye
2017-04-08 09:33:17 +08:00
@fengyqf 因为出错了,所以分别做了检测,并非同时处理 PHP
Yourdaye
2017-04-09 15:08:41 +08:00
@ivmm 兄弟能不能说详细点?

我的 nginx 里面是这样配置的,用的 8080 端口

location ~ \.(php)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}

怎样才能做到你说的那样呢?多谢了!
Yourdaye
2017-04-09 15:12:40 +08:00
@ivmm 目前的 nginx 是这样配置的:

location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
Yourdaye
2017-04-09 15:25:43 +08:00
@ivmm 是不是直接把 fastcgi_pass 127.0.0.1:9000; 改为: fastcgi_pass http://127.0.0.1:8080;
ivmm
2017-04-09 15:49:12 +08:00
@Yourdaye 你反代了 apache 就不需要再反代一个 php-fpm 了
Yourdaye
2017-04-09 16:30:36 +08:00
@ivmm 反代的 PHP 版本是 5.2 ,跟现有版本 5.4 不同,怎么解决呢?
ivmm
2017-04-09 17:11:03 +08:00
@Yourdaye 因为 mod_php 驱动的 PHP 是 5.2 , PHP5.4 是 PHP-FPM

你最好找一篇详细介绍 LANMP 的教程,而不是这样没有逻辑的提问
Yourdaye
2017-04-09 17:36:34 +08:00
@ivmm 好吧,找了很多了,能解释清楚的非常少

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/353228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX