【问题标题】:NGINX multiple server_name, but have robots.txt file for each server_name?NGINX 多个 server_name,但每个 server_name 都有 robots.txt 文件?
【发布时间】:2016-10-13 07:45:14
【问题描述】:

我必须创建一个 server_name 作为我的 CDN 拉取源的侦听器。

CDN 想要从 origin.mydomain.com 拉取

我在 www.mydomain.com 下已经有 100 行代码,展示了所有的重写、规则等,我需要再次使用所有这些代码。

我的简单解决方案是拥有

server_name www.mydomain.com origin.mydomain.com

让 NGINX 轻松侦听对“源”子域的请求。

我担心谷歌会发现子域并开始抓取它。我想以某种方式阻止谷歌进入“起源”子域。由于声明了多个 server_name,我不确定是否可以将 robots.txt 文件放在某个地方,因为使用与实时站点相同的根文件夹。

有没有简单的方法可以做到这一点?

感谢所有反馈。

干杯 瑞恩

【问题讨论】:

    标签: nginx robots.txt server-name


    【解决方案1】:

    使用两个server 块并使用include 指令来拉入公共代码。例如:

    server {
        server_name www.mydomain.com;
        include /path/to/common/config;
    
        location = /robots.txt {
            root /path/to/friendly/dir;
        }
    }
    server {
        server_name origin.mydomain.com;
        include /path/to/common/config;
    
        location = /robots.txt {
            root /path/to/unfriendly/dir;
        }
    }
    

    因此,您在不同的目录中有两个 robot.txt 文件 - 或使用 rewrite ... last 将 URI 映射到不同的本地文件。

    【讨论】:

    • 好的,所以通过将所有重写等包含在可以包含的外部代码中来简化。包含必须有任何格式吗?或者只是剪切/粘贴到空白配置文件中?
    • The documentation 声明“包含的文件应由语法正确的指令和块组成”。基本上是剪切和粘贴。
    • 嗯。我收到一个错误。 nginx: [emerg] "location" 指令在 /usr/local/etc/nginx/conf.d/rewrite_rules.conf:7 中是不允许的
    • 我现在在主站点 conf server { server_name www.mydomain.com; include/usr/local/etc/nginx/conf.d/traileraddict_rules.conf location = /robots.txt { root /path/to/friendly/dir; } }
    • 将文件放在现有的包含目录中不是一个好主意,否则其他一些nginx 文件也会把它们吸进去。你可能会发现conf.d 已经被占用了。
    猜你喜欢
    • 1970-01-01
    • 2013-01-04
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    相关资源
    最近更新 更多