Кажется, я не могу правильно настроить nginx для возврата содержимого robots.txt. В идеале мне не нужен файл, и я просто хочу обслуживать текстовый контент, настроенный непосредственно в nginx. Вот мой конфиг:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location = /robots.txt {
#return 200 "User-agent: *\nDisallow: /";
#alias /media/ws/crx-apps/eap/welcome-content/robots.txt;
alias /usr/share/nginx/html/dir/robots.txt ;
}
location / {
try_files $uri $uri/ =404;
}
}
Ни одна из вещей в = /robots.txt
местоположение работает, и я не понимаю почему. Доступ http://localhost/robots.txt
дает 404. Однако http://localhost/index.html
обслуживается правильно.
Обратите внимание, что я не менял никаких настроек nginx по умолчанию, полученных из apt-get install nginx
помимо добавления новой локации (для тестирования).
Во-первых, я думаю, что проблема в вашей конфигурации - это регулярное выражение, используемое для сопоставления. Было бы очень полезно написать такую инструкцию в своей конфигурации, чтобы предотвратить возможные ошибки с сопоставлением с образцом:
location = /robots.txt {
alias /usr/share/nginx/html/dir/robots.txt;
}
Во-вторых, вы также должны проверить разрешения и эффективного владельца /usr/share/nginx/html/dir/robots.txt