Nginx作为Apache的反向代理,Php提示下载而不是执行

Nginx作为Apache的反向代理,Php提示下载而不是执行

我正在尝试将 Nginx 作为 centos 7 服务器上 Apache 的反向代理。

这是我到目前为止所做的事情:

为 Nginx 创建配置文件:纳米/etc/nginx/conf.d/default.conf

server {
    listen   80; 

    root /usr/share/nginx/html/; 
    index index.php index.html index.htm;

    server_name _; 

    location / {
    try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {

    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;

     }

     location ~ /\.ht {
            deny all;
    }
}

修改 2 行/etc/httpd/conf/httpd.conf

Listen 127.0.0.1:8080
DocumentRoot "/usr/share/nginx/html/" 

我在 /usr/share/nginx/html 中创建了一个名为 info.php 的文件,并将<?php infophp();?>其放入其中,但是当我尝试加载页面时http://My_Ip/info.php我收到一个弹出窗口要求下载文件,而我希望执行该文件。

我通过了这个命令httpd -M | grepphp 查看 Php 模块是否存在于我的 apache 网络服务器中,然后我得到“php7_module (shared)”,所以我猜是的。

任何帮助都将不胜感激,谢谢。

亨利

附言:当我继续http://我的 IP我得到了默认的 Nginx 主页 p.s2:对于那些询问的人,我已经在 serverfault 上发布了一个相关问题(错误 403),但看起来我不再有这个问题了(即如果我去看看http://My_IP/any_css_file.css例如,它显示得很好,没有错误)

答案1

您需要在服务器上运行 PHP FPM 实例来执行 php 脚本。您可以通过运行来检查

find / -type d -iname *fpm*

如果返回一些结果,则表示它已安装。现在要找出它正在监听的端口/套接字,您可以运行:

find / -type d -iname *fpm* | xargs grep -r "^listen[= ]"

返回的内容如下:

/etc/php/7.2/fpm/pool.d/www.conf:listen = /run/php/php7.2-fpm.sock

在你的 Nginx 配置目录中(通常/etc/nginx/),你可能已经有一个文件fastcgi_params,如果没有,则创建一个并复制示例这里

然后更改您的 php 位置块以包含您的配置文件,并使用之前命令返回的端口/套接字将请求传递给 php fpm,如下所示:

location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        include fastcgi_params;
    }

现在重新启动 Nginx,它就应该可以工作了。

相关内容