AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 549332
Accepted
anup
anup
Asked: 2013-10-30 00:06:14 +0800 CST2013-10-30 00:06:14 +0800 CST 2013-10-30 00:06:14 +0800 CST

如何在 nginx 中为所有虚拟主机全局设置 robots.txt

  • 772

我正在尝试为robots.txtnginx 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
  • 5 5 个回答
  • 62997 Views

5 个回答

  • Voted
  1. Konstantin V Bekreyev
    2016-01-27T06:07:05+08:002016-01-27T06:07:05+08:00

    您可以直接在 nginx 配置中设置 robots.txt 文件的内容:

    location = /robots.txt { return 200 "User-agent: *\nDisallow: /\n"; }
    

    也可以添加正确的 Content-Type:

    location = /robots.txt {
       add_header Content-Type text/plain;
       return 200 "User-agent: *\nDisallow: /\n";
    }
    
    • 81
  2. user79644
    2013-10-30T03:01:44+08:002013-10-30T03:01:44+08:00

    是否定义了其他规则?也许 common.conf 或包含的另一个 conf 文件覆盖了您的配置。以下其中一项绝对应该有效。

    location /robots.txt { alias /home/www/html/robots.txt; }
    location /robots.txt { root /home/www/html/;  }
    
    1. Nginx 按照出现的顺序运行所有“正则表达式”位置。如果任何“正则表达式”位置成功,Nginx 将使用第一个匹配项。如果没有“正则表达式”位置成功,Nginx 使用上一步中找到的普通位置。
    2. “正则表达式”位置优先于“前缀”位置
    • 10
  3. Best Answer
    user79644
    2013-10-30T04:36:15+08:002013-10-30T04:36:15+08:00

    位置不能在http块内使用。nginx 没有全局别名(即可以为所有虚拟主机定义的别名)。将您的全局定义保存在一个文件夹中并包含它们。

    server {
      listen 80;
      root /var/www/html;
      include /etc/nginx/global.d/*.conf;
    }
    
    • 5
  4. Ben Bieler
    2020-08-27T05:54:19+08:002020-08-27T05:54:19+08:00

    您也可以直接为 robots.txt 提供服务:

    location /robots.txt {
       return 200 "User-agent: *\nDisallow: /\n"
    }
    
    • 1
  5. Ákos Vandra-Meyer
    2018-07-05T13:54:16+08:002018-07-05T13:54:16+08:00

    我对 acme challanges 有同样的问题,但同样的原则也适用于你的情况。

    我为解决这个问题所做的是将我的所有站点移动到一个非标准端口,我选择了8081,并创建了一个在端口 80 上侦听的虚拟服务器。它将所有请求代理127.0.0.1:8081到 .well-known 的请求除外。这几乎就像一个全局别名,有一个额外的跃点,但由于 nginx 的异步特性,这不应该导致性能显着下降。

    upstream nonacme {
      server 127.0.0.1:8081;
    }
    
    server {
      listen 80;
    
      access_log  /var/log/nginx/acme-access.log;
      error_log   /var/log/nginx/acme-error.log;
    
      location /.well-known {
        root /var/www/acme;
      }
    
      location / {
        proxy_set_header    Host                $http_host;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto   $scheme;
        proxy_set_header    X-Frame-Options     SAMEORIGIN;
    
        # WebSocket support (nginx 1.4)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    
        proxy_pass http://nonacme;
      }
    }
    
    • -1

相关问题

  • Gzip 与反向代理缓存

  • nginx 作为代理的行为

  • Nginx 学习资源 [关闭]

  • 提供 70,000 个静态文件 (jpg) 的最佳方式?

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve