Cron 守护进程 Wget 被阻止

Nee*_*eel 3 nginx wget cron http-status-code-403 debian-wheezy

我在没有 cpanel 的Debian 7上安装了nginx

我正在像这样设置我的 Crontab:

*/45 * * * * wget "http://example.com/cron-url.php" >/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

上面的 cron 被 403 forbidden 阻塞了:

--2014-12-10 05:40:01--  http://example.com/cron-url.php
Connecting to xyz.xx.xx.xxx:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2014-12-10 05:40:01 ERROR 403: Forbidden.
Run Code Online (Sandbox Code Playgroud)

在这里搜索并谷歌搜索后,我了解到我的服务器可能正在阻止 wget。我查看了我的 nginx 配置文件,我认为应该是由于以下原因:

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
    return 403;
}
Run Code Online (Sandbox Code Playgroud)

对于 cron 命令,我必须使用它的 url,并且脚本路径的绝对链接不起作用。现在,如果我需要允许 cron 工作而不被阻止,我该怎么办?我在想也许我需要从我自己的服务器上允许 wget,但不知道如何使用 nginx 来做到这一点。有人可以帮我解决这个 cron 问题吗?

Hyp*_*ppy 5

wget从 nginx 配置中删除排除项,或者将类似的内容添加到您的wget命令中:

--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101  Firefox/21.0" --referrer whatever.example.com
Run Code Online (Sandbox Code Playgroud)

  • @blackops_programmer `wget` 与使用浏览器的人一样强大......如果它们被隐藏,他们就无法下载“敏感”的东西(因为那样他们就可以使用普通浏览器了!) (2认同)
  • 即使他们使用充满 wget 的脚本抓取您的网站,他们也可以只修改用户代理和引荐来源以获得相同的结果。我不知道为什么 nginx 默认拒绝 wget,也许这是某种灰胡子撒尿比赛。 (2认同)