我试图弄清楚为什么会发生这种情况。我在这台服务器上从来没有遇到过这个问题,所以我有点困惑。
服务器是 nginx + Apache 2.4 反向代理。所以nginx我有这个代理通行证:
location ~ \.cgi$ {
try_files $uri =404;
gzip off;
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:8181;
}
然后对于 Apache 配置中的域,我有:
<VirtualHost *:8181>
# other stuff here
<Directory "/the/web/directory/*">
Options +ExecCGI +FollowSymLinks +MultiViews
AllowOverride AuthConfig
Require all granted
AddHandler cgi-script .cgi .pl
</Directory>
</VirtualHost>
域已启用并正常运行。但是,在为某人开发网站时,我遇到了一个奇怪的错误。
页面时不时地给出一个404:
..但其余时间它工作正常。在这种情况下,我向它发送完全相同的参数(只需重新提交表单)。我已经检查了问题是否与 AJAX 请求有关,但是如果我在选项卡中打开 URL 并按重新加载几次进行测试,我会遇到同样的问题。
Apache 日志文件中没有任何帮助:
authorization result of <RequireAny>: granted, referer: https://x.co.uk/contact.html
我很确定错误来自 Apache 端,因为 404 的响应是:
Not Found
The requested URL /cgi-bin/contact.cgi was not found on this server.
Apache/2.4.18 (Ubuntu) Server at x.co.uk Port 8181
我对这可能是什么感到有点茫然。有任何想法吗?
嗯,很奇怪 - 放弃那个。我重新启动它,现在一切正常!非常奇怪,域错误日志中没有错误消息 - 也不是主要的 Apache 错误日志(在 /var/log 中)