我正在使用 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 反向代理配置上。