Конфигурация Nginx, angularJS, django и phantomJS
Я успешно настроил Django, angularjs и phantomJS (для целей SEO) для совместной работы, однако у меня возникла небольшая проблема с маршрутами.
http://thing.com/?_escaped_fragment_= корректно переписывается, и я получаю визуализированный магазин моментальных снимков своей страницы (обслуживается phantomJS), однако http://thing.com/news/?_escaped_fragment_= нет, и я получаю 404 не найдена ошибка.
Без части _escaped_fragment_ оба сайта найдены и отображаются правильно.
Вот мой конфиг nginx:
server {
listen 80;
server_name something.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/folder/project;
}
root /home/folder/project/frontend/;
index index.html;
if ($args ~ _escaped_fragment_) {
rewrite ^ /snapshot$uri;
}
location ~ ^/snapshot(.*) {
rewrite ^/snapshot(.*)$ $1 break;
# I commented out this line to test why PhantomJS wasn't rendering pages
# such as /news correctly
#proxy_pass http://something.com:8888;
proxy_set_header Host $host;
proxy_connect_timeout 60s;
}
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_pass http://unix:/home/folder/project/project.sock;
try_files $uri $uri/ /index.html;
}
location /admin/ {
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_pass http://unix:/home/folder/project/project.sock;
}
}
Что мне не хватает?
РЕДАКТИРОВАТЬ: В основном проблема заключается в том, что URL-адрес запроса проходит к phantomJS в виде http:// some.comnews (обратите внимание на отсутствие /)
1 ответ
Что ж, похоже на изменение переписывания phantomJS на это:
rewrite ^/snapshot(.*)$ /$1 break;
сделал свое дело.