根据我的阅读,我正在尝试将Nginx设置为Apache的反向代理,它允许nginx提供静态内容,并且Apache处理后端PHP内容,但是我似乎无法让Apache呈现。 / p>
我在CentOS7上,仅使用yum install nginx
安装了nginx,然后通过执行以下操作安装了PHP7.2;
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php72
yum install php72 php72-php-fpm php72-php-mysqlnd php72-php-opcache php72-php-xml php72-php-xmlrpc php72-php-gd php72-php-mbstring php72-php-json
运行php72 -v
给了我
PHP 7.2.13 (cli) (built: Dec 8 2018 10:59:58) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.13, Copyright (c) 1999-2018, by Zend
Technologies
然后我跑了
ln -s /usr/bin/php72 /usr/bin/php
yy将命令安装为php72
我编辑了nginx.conf,将用户从nginx更改为apache,并将服务器块更改为;
server {
listen 80 default;
server_name 108.xxx.xxx.xxx;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /var/www/html;
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
我还添加了/etc/nginx/conf.d/proxy.conf并添加了以下内容;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
然后我通过yum install httpd
安装了Apache2。
然后我编辑了Apache2 httpd.conf文件;
- Listen 80
+ Listen 127.0.0.1:8080
我还编辑了/etc/opt/remi/php72/php-fpm.d/www.conf,并将用户和组更改为apache以及
listen = /var/run/php-fpm.sock
listen.owner = apache
listen.group = apache
listen.mode = 0660
这些是我所做的唯一更改。
我在/var/www/html
中添加了2个文件,分别是index.html和index.php ... index.html可以正常工作,当我用browserspy检查时,它说它是由Nginx提供的,很好。但是当我运行index.php文件时,它会显示实际的php代码,并且不会呈现它。
我以前从未真正使用过Apache2,因此我不确定如何查找错误。当我查看Apache2模块目录时,找不到任何PHP模块
ls -lah /etc/httpd/modules/ | grep php
什么也不返回。
任何帮助都会非常有用,我一直在寻找解决方案的几天。
谢谢
答案 0 :(得分:0)
Nginx绝对可以执行PHP脚本,而无需代理回Apache。 之所以只看到PHP代码而不是网站,是因为您的Apache配置可能未启用PHP模块。
您可以通过运行yum --enablerepo=remi install php
并运行service apache2 restart
来执行此操作,以使用新配置重新启动服务器。
安装基本的PHP软件包还为Apache要执行的PHP文件添加了必需的模块。
这应该使您的服务器能够按预期开始执行PHP脚本。
如果您想改为通过Nginx运行PHP网站,则需要对Nginx配置进行一些小的修改。
首先,您需要替换位置块以使用本地文件系统上的文件,然后指向任何.php文件以使用PHP-FPM运行。
location / {
root /var/www/html;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}