(решено) nginx не находит sitemap.xml

Главные вкладки

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 15 марта 2010 в 18:12

Обнаружил проблему с sitemap.xml, генерируемый с помощью модуля XML sitemap. У меня используется front-back конфигурация серверов, в качестве front юзаю nginx, ну а back - apache2. Если обращаться по порту 81 (на apache), то все нормально, файл находится, если через nginx - 80 порт - то выдается 404 Not Found, что в общем то понятно, т.к. по указанному адресу этого файла нет. Вся статика у меня управляется с помощью nginx.

Подскажите, как мне решить эту проблему? Убрать из принудительной обработки с помощью nginx тип файлов xml, чтобы apache уже обрабатывал этот тип, что скажете?

Комментарии

Аватар пользователя Siegfrid@drupal.org Siegfrid@drupal.org 15 марта 2010 в 18:17

Конфиги:

#cat nginx.conf
user www-data;
worker_processes 1;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 64;
access_log /var/log/nginx/access.log;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;

gzip on;
gzip_proxied any;
gzip_min_length 1100;
gzip_http_version 1.0;
gzip_buffers 4 8k;
gzip_comp_level 9;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

#cat mysite.ru
server {
listen 80;
server_name mysite.ru www.mysite.ru en.mysite.ru;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/multisite/www/;
index index.html index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:81/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}

Аватар пользователя axel axel 16 марта 2010 в 0:27

<a href="mailto:Siegfrid@drupal.org">Siegfrid@drupal.org</a> wrote:

location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/multisite/www/;
index index.html index.php;
access_log off;
expires 30d;
}
- так вот в этом куске конфига видно, что все *.xml файлы попадают в этот локейшн, который просто отдает их содержимое. А sitemap.xml друпалом генерится из данных БД динамически, на ФС его реально нет. Надо убрать в регвыре выше |xml| чтобы файл передавался в обработчик location / для апача.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 25 декабря 2010 в 15:01

У меня аналогичная проблема, только апача нет вообще — всё обслуживается nginx. В конфигах (nginx.cong и sites-available/example.net) упоминаний о xml нет. Лог Друпала оптимистично докладывает о том, что sitemap.xml was submitted to Google, при этом google webmasters tools говорит, что ни о чём подобном понятия не имеет. При попытке дёрнуть sitemap.xml получаю 404.

Пробовал воспользоваться советом с drupal.org, но безуспешно — ничего не изменилось (естественно, после внесения изменений в конфиг я перезапускал nginx).