I hate to ask this question here but Iâve exhausted all other resources. And Iâve searched everywhere but canât find any help.
Iâm migrating my WordPress site from an Apache server to the nginx server. And one of the plug-ins I used on my Apache server was roksprocket.
http://www.rockettheme.com/wordpress/plugins/roksprocket
When I install roksprocket on a fresh install of the nginx the plug-in refuses to work. When I hit any save button nothing at all happens.
A quick look into Chrome’s Dev tools console shows the following javascript error every time I press the save button:
Cannot read property 'status' of undefined
But when I install wordpress with roksprocket on a fresh apache serverâ¦. no issues.
I have a feeling that something is missing in the nginx config stopping the plug-in from getting a proper ajax response. Here are the headers sent and received:
`
Remote Address:example.com:80
Request URL:http://example.com/wp-admin/admin-ajax.php?action=roksprocket&nonce=4e79d82c02
Request Method:POST
Status Code:200 OK
Request Headers
Accept:text/javascript, text/html, application/xml, text/xml, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,es;q=0.6
Connection:keep-alive
Content-Length:158
Content-type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:wordpress_8d5c55f263f1fbeaeacab59de0ed539f=webmaster%7C1399299571%7Cc45cc66c20278417596ac7a86a44f14c; gantry-android-switcher=1; PHPSESSID=lc8g3abuip5geje0mfq9c2m0v2; wp-settings-time-1=1399126752; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_8d5c55f263f1fbeaeacab59de0ed539f=webmaster%7C1399299571%7C9762057a27f2113db6f91e2435df4d87; roksprocket-showitems=1; gantry-android-switcher=1; wp-settings-time-3=1399174698
Host:example.com
Origin:http://example.com
Referer:http://example.com/wp-admin/admin.php?page=roksprocket-edit&nonce=4e79d82c02&paged=1&id=0
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
X-Requested-With:XMLHttpRequest
Query String Parameters
action:roksprocket
nonce:4e79d82c02
Form Data
id:0
uuid:eb62825b-8b2c-4251-cd0b-ddcfabf45c5c
title:test
params[provider]:wordpress
params[layout]:tabs
task:
model:edit
model_action:save
model_encoding:form
Response Headers
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Content-Type, Authorization, X-Requested-With
Access-Control-Allow-Methods:GET, PUT, POST, DELETE, OPTIONS
Access-Control-Allow-Origin:localhost
Access-Control-Allow-Origin:http://example.com
Cache-Control:no-cache, must-revalidate, max-age=0
Content-Encoding:gzip
Content-Type:text/html; charset=UTF-8
Date:Sun, 04 May 2014 03:38:37 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Pragma:no-cache
Server:nginx
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
X-Robots-Tag:noindex
NGINX.CONF
user www-data;
worker_processes auto;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
multi_accept on;
}
http {
##
# Easy Engine Settings
##
server_tokens off;
add_header X-Powered-By EasyEngine;
add_header rt-Fastcgi-Cache $upstream_cache_status;
add_header Vary "Accept-Encoding";
# Limit Request
limit_req_status 403;
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
# Proxy Settings
# set_real_ip_from proxy-server-ip;
# real_ip_header X-Forwarded-For;
fastcgi_read_timeout 300;
client_max_body_size 100m;
# SSL Settings
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5:!kEDH;
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 30;
types_hash_max_size 2048;
reset_timedout_connection on;
server_names_hash_bucket_size 128;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
log_format rt_cache '$remote_addr $upstream_response_time $upstream_cache_status [$time_local] '
'$http_host "$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:50m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503;
fastcgi_cache_valid any 1h;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SERVER_NAME $http_host;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
# Common Upstream Settings
upstream php {
# server unix:/run/php5-fpm.sock;
server 127.0.0.1:9000;
}
upstream debug {
# Debug Pool
server 127.0.0.1:9001;
}
##
# Virtual Host Configs
##
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
`
example.com.conf
`
server {
# Uncomment The Following Line For Domain Mapping
# listen 80 default_server;
server_name example.com *.example.com;
# Uncomment The Following Line For Domain Mapping
#server_name_in_redirect off;
access_log /var/log/nginx/example.com.access.log rt_cache;
error_log /var/log/nginx/example.com.error.log;
root /var/www/example.com/htdocs;
index index.php index.htm index.html;
set $cache_uri $request_uri;
# POST Requests And Urls With A Query String Should Always Go To PHP
if ($request_method = POST) {
set $cache_uri 'null cache';
}
if ($query_string != "") {
set $cache_uri 'null cache';
}
# Don't Cache Uris Containing The Following Segments
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*.php|index.php|/feed/|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
set $cache_uri 'null cache';
}
# Don't Use The Cache For Logged In Users Or Recent Commenters
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
set $cache_uri 'null cache';
}
# Use Cached Or Actual File If They Exists, Otherwise Pass Request To WordPress
location / {
try_files /wp-content/cache/page_enhanced/${host}${cache_uri}_index.html $uri $uri/ /index.php?$args;
}
location ~ ^/wp-content/cache/minify/(.+.(css|js))$ {
try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?file=$1;
}
location ~ .php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass php;
}
# WordPress Common Settings
add_header Access-Control-Allow-Origin "localhost";
add_header Access-Control-Allow-Methods "GET, PUT, POST, DELETE, OPTIONS";
add_header Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With";
# Limit Access To Avoid Brute Force Attack
location = /wp-login.php {
limit_req zone=one burst=1 nodelay;
include fastcgi_params;
fastcgi_pass php;
}
# Disable wp-config.txt
location = /wp-config.txt {
deny all;
access_log off;
log_not_found off;
}
# Disallow PHP In Upload Folder
location /wp-content/uploads/ {
location ~ .php$ {
#Prevent Direct Access Of PHP Files From Web Browsers
deny all;
}
}
# Basic Locations Files
location = /favicon.ico {
access_log off;
log_not_found off;
expires max;
}
location = /robots.txt {
access_log off;
log_not_found off;
}
# Cache Static Files For As Long As Possible
location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires max;
}
# Security Settings For Better Privacy
# Deny Hidden Files
location ~ /. {
deny all;
access_log off;
log_not_found off;
}
# Deny Backup Extensions & Log Files
location ~* ^.+.(bak|log|old|orig|original|php#|php~|php_bak|save|swo|swp)$ {
deny all;
access_log off;
log_not_found off;
}
# Return 403 Forbidden For readme.(txt|html) or license.(txt|html)
if ($request_uri ~* "^.+(readme|license).(txt|html)$") {
return 403;
}
# Status Pages
location /nginx_status {
stub_status on;
access_log off;
satisfy any;
auth_basic "Restricted Area";
auth_basic_user_file htpasswd-ee;
# Allowed IP Address List
allow 127.0.0.1;
deny all;
}
location ~ ^/(status|ping) {
include fastcgi_params;
fastcgi_pass php;
satisfy any;
auth_basic "Restricted Area";
auth_basic_user_file htpasswd-ee;
# Allowed IP Address List
allow 127.0.0.1;
deny all;
}
# EasyEngine Admin Tools
# PMA Settings
location /pma {
return 301 https://$host:22222/db/pma;
}
location /phpMyAdmin {
return 301 https://$host:22222/db/pma;
}
location /phpmyadmin {
return 301 https://$host:22222/db/pma;
}
# Adminer Settings
location /adminer {
return 301 https://$host:22222/db/adminer;
}
}
`