我正在尝试为robots.txt
nginx http 服务器下的所有虚拟主机设置。通过将以下内容放入 main 中,我能够在 Apache 中做到这一点httpd.conf
:
<Location "/robots.txt">
SetHandler None
</Location>
Alias /robots.txt /var/www/html/robots.txt
我尝试通过在 nginx.conf 中添加下面给出的行(a)和(b)作为 include conf.d/robots.conf 对 nginx 做类似的事情
location ^~ /robots.txt {
alias /var/www/html/robots.txt;
}
我尝试过使用'=',甚至将其放入其中一个虚拟主机中进行测试。似乎没有任何效果。
我在这里想念什么?还有另一种方法可以实现这一目标吗?
您可以直接在 nginx 配置中设置 robots.txt 文件的内容:
也可以添加正确的 Content-Type:
是否定义了其他规则?也许 common.conf 或包含的另一个 conf 文件覆盖了您的配置。以下其中一项绝对应该有效。
位置不能在
http
块内使用。nginx 没有全局别名(即可以为所有虚拟主机定义的别名)。将您的全局定义保存在一个文件夹中并包含它们。您也可以直接为 robots.txt 提供服务:
我对 acme challanges 有同样的问题,但同样的原则也适用于你的情况。
我为解决这个问题所做的是将我的所有站点移动到一个非标准端口,我选择了
8081
,并创建了一个在端口 80 上侦听的虚拟服务器。它将所有请求代理127.0.0.1:8081
到 .well-known 的请求除外。这几乎就像一个全局别名,有一个额外的跃点,但由于 nginx 的异步特性,这不应该导致性能显着下降。