通过反向代理运行 PHP 的 Web 服务器存在问题

通过反向代理运行 PHP 的 Web 服务器存在问题

我正在使用 NGINX 反向代理,并在反向代理上安装了通配符证书。将 NGINX 反向代理流量路由到运行 Apache2 和 NGINX Web 服务的标准 Web 服务器效果很好。

但是,路由到使用 PHP 代码和 Apache2 的服务器时无法正确显示页面。我认为 PHP 代码或标头信息没有正确通过反向代理。

当我使用 HTTP 及其内部 IP 地址直接转到 PHP Web 服务器时,一切看起来都很棒。

网页布局和图形看起来完全不同,缺少图形布局通过反向代理路由到我的 PHP 服务器时。NGINX reverse_proxy 配置如下:

   listen 80;
   server_name itop.My_Domain_Name.org;
   return 301 https://$host$request_uri;
  }
  server {
   listen 443 ssl;
   server_name itop.surfingjoe.org;
   ssl_certificate /etc/letsencrypt/live/My_Domain_Name.org/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/liveMy_Domain_Name.org/privkey.pem;

      location / {
          proxy_pass http://192.168.1.4;
          include proxy_params;
      }
  }```
I'm sure there is a change I need to make to the NGINX configuration in order to make it work, but I'm a newbie to using NGINX reverse proxy and sure would like some help, please.

答案1

HBrujin 确实用“不要只依赖你的直觉,要检查”这句话回答了这个问题。所以我做了检查。

使用 Firefox 浏览器,我对失败的网页进行了“检查”,并找到了问题所在。我发现域名和子目录之间缺少尾部斜杠。

在配置应用程序服务器(ITOP,一种 ITSM 解决方案)时,通过浏览器配置应用程序时,我输入了应用程序的域地址。例如,https://example.com/itop但我应该将应用程序的地址放置为https://example.com/itop/。不同之处在于,trailing slash我的应用程序配置中缺少(“/”)。

我不知道为什么直接通过 IP 地址寻址有效,而通过反向代理寻址却失败。当 HBrujin 让我“检查”并且不相信我的直觉时,我使用了 Firefox 检查模式并发现了问题。

所以谢谢

PS. 事实证明,问题并不出在我的 NGINX 反向代理配置上。

相关内容