Я выдергиваю волосы на этом.
Вы можете увидеть себя здесь - http://starterpad.com/blog/ - что все изображения, файлы CSS и JS содержат ошибку 404.
Главный сайт StarterPad (http://starterpad.com) работает под управлением Rails, и это нормально. Но / blog - это WordPress, и он видел лучшие времена.
Вот наш файл nginx.conf:
user apache;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
passenger_root /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.24;
passenger_ruby /usr/local/rvm/wrappers/ruby-2.0.0-p247/ruby;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
reset_timedout_connection on;
keepalive_timeout 65;
gzip on;
# include /etc/nginx/conf.d/*.conf;
server {
server_name www.starterpad.com;
return 301 $scheme://starterpad.com$request_uri;
}
upstream starterpad {
server unix:///var/www/starterpad.com/shared/tmp/sockets/puma.sock fail_timeout=0;
}
server {
listen 80;
server_name starterpad.com vps.starterpad.com;
root /var/www/starterpad.com/current/public;
error_log /var/www/starterpad.com/shared/log/nginx_error.log;
access_log off;
error_page 403 404 /404.html;
error_page 422 /422.html;
error_page 500 502 503 504 /500.html;
location ^~ /assets|uploads/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
location @starterpad {
proxy_pass http://starterpad; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
try_files /index.html $uri.html $uri @starterpad;
}
location /blog/ {
#try_files $uri $uri/ /blog/index.php?$args;
#deny all;
root /var/www/starterpad.com/blog;
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
include wpsecure.conf;
index index.php;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php {
root /var/www/starterpad.com/blog;
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
Вот некоторые ошибки из журнала ошибок, но они мне не кажутся полезными:
2015.01.26 22:16:06 [ошибка] 11511 # 0: * 11 open () "/var/www/starterpad.com/blog/blog/wp-content/themes/sparkling/inc/css/font- awesome.min.css "не удалось (2: нет такого файла или каталога), клиент: 173.245.48.128, сервер: starterpad.com, запрос:" GET / blog / wp-content / themes / sparkling / inc / css / font- awesome.min.css? ver = 4.1 HTTP / 1.1 ", хост:" starterpad.com ", реферер:"http://starterpad.com/blog/"
2015.01.26 19:22:26 [ошибка] 10431 # 0: * 28798 FastCGI отправлено в stderr: "Невозможно открыть основной скрипт: /var/www/starterpad.com/blog/b6d767d2f8ed5d21a44b0e5886680cb9/generator.php (Нет такого файл или каталог) "при чтении заголовка ответа от восходящего потока, клиент: 108.162.215.123, сервер: starterpad.com, запрос:" POST /b6d767d2f8ed5d21a44b0e5886680cb9/generator.php HTTP / 1.1 ", восходящий поток:" fastcgi: //127.0.0.1: 9000 ", хост:" starterpad.com ", реферер:"http://starterpad.com/blog/wp-content/uploads/2014/12/SoftwareProgrammer-750x410.jpg"
Я прочитал так много страниц Stack Overflow и других, пробовал почти все в nginx.conf, но, хоть убей, не могу заставить его работать.
Любые идеи? Ты был бы моим чертовым героем!
Разобрался (спасибо Майкл Хэмптон). Измененные строки ниже выделены жирным шрифтом.
location / blog / {
корень /var/www/starterpad.com;
включить wpsecure.conf;
индекс index.php;
try_files $ uri $ uri / /index.php?q=$uri&$args;
}
местоположение ~ .php $ {
корень /var/www/starterpad.com/blog;
try_files $ uri $ uri / /index.php?q=$uri&$args;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^ (. +. php) (. *) $;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
включить fastcgi_params;
}