CGI 停止将 Nginx 设置为 Apache 的反向代理

CGI 停止将 Nginx 设置为 Apache 的反向代理

我正在运行一个网站 www.example.com。最初,我使用的是 apache,任何对我网站的访问都会重定向到 www.example.com/path。现在,此重定向在我的 httpd.conf 中定义如下:

Redirect 301 /index.html http://www.example.com/path

我对这个域名的 VirtualHost 设置如下:

<VirtualHost 1.1.1.1:80>
    DirectoryIndex  index.php index.html index.htm index.shtml
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html"
    ServerName www.example.com

    ScriptAlias /path "/path/to/cgi/script"

</VirtualHost>

因此,基本上,当有人访问 www.example.com 时,他会被重定向到 www.example.com/path,该路径将执行 ScriptAlias 指令定义的 CGI 脚本。

一切都运行正常,直到我必须执行以下操作:

安装 nginx 并将其配置为 apache 的反向代理。

现在 nginx 监听端口 80,apache 监听 8080。我相应地在 httpd.conf 文件中做了更改。

Listen 8080

<VirtualHost 1.1.1.1:8080>

现在,当有人尝试访问 www.example.com 时,他将被重定向到 www.example.com/path,但脚本似乎没有执行。我的网页上出现以下错误:

Not Found

The requested URL /path was not found on this server.
Apache/2.4.25 (Unix) PHP/7.0.16 SVN/1.7.14 Server at www.example.com Port 80

它重定向的事实告诉我,从 nginx 到 apache 的请求工作正常。一定是 CGI 执行出了问题。apache 错误日志和 nginx 错误日志中没有任何内容。

我不明白这一点。Apache 一切运行正常,但现在当请求到达 Apache 时,出现了问题。

答案1

我修复了这个问题,但我不明白它是如何修复的。在我的 nginx conf 中,我将请求从端口 80 的 nginx 转发到端口 8080 的 apache,我将以下行替换为

proxy_pass http://127.0.0.1:8080;

proxy_pass http://www.example.com:8080;

据我所知,127.0.0.1 和 www.example.com 应该相同,因为我的 nginx 安装在 www.example.com 服务器上。

相关内容