【发布时间】:2015-06-29 10:52:15
【问题描述】:
我正在通过我的 Nginx 服务器向 rails 发送 AJAX DELETE 请求,我可以看到 db 正在正确更新,并且来自 rails 服务器的响应符合预期。但响应状态不是success,而是error 状态。
当我提醒 xhr.status 时,它会显示 0。
我使用 Nginx 进行了以下负载平衡设置 -
我在端口 3000 和 3001 上有 2 个 rails 服务器。我需要接受来自浏览器的 https 请求并将它们重定向到 rails 服务器。我有以下 Nginx Conf 文件 -
worker_processes 1;
events {
worker_connections 1024;
}
http {
passenger_root /home/hkr/.rvm/gems/ruby-2.2.0@global/gems/passenger-5.0.6;
passenger_ruby /home/hkr/.rvm/wrappers/ruby-2.2.0/ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
upstream web-cluster {
ip_hash;
server localhost:3001;
server localhost:3000;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 443 ssl;
server_name ruby-trail.com;
root PATH_TO_PROJECT/public;
passenger_enabled on;
rails_env development;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
error_log /var/log/nginx/my-error.log;
access_log /var/log/nginx/my-access.log;
location / {
proxy_set_header Host $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;
index $uri $uri/ index.html index.htm;
proxy_pass http://web-cluster$request_uri;
proxy_redirect http://localhost:3001 https://ruby-trail.com;
}
}
当我发送 ajax DELETE 请求时,rails 服务器正在响应正确的预期响应,但响应没有获得 OK 200 状态。
这是来自 NGINX 错误日志 -
2015/04/21 20:28:07 [error] 23316#0: *18 upstream sent no valid HTTP/1.0 header while reading response header from upstream, client: 127.0.0.1, server: ruby-trail.com, request: "DELETE /links/48.json HTTP/1.1", upstream: "http://127.0.0.1:3001/links/48.json", host: "ruby-trail.com", referrer: "https://ruby-trail.com/groups/18"
这是来自 NGINX 访问日志 -
127.0.0.1 - - [21/Apr/2015:20:28:07 -0500] "DELETE /links/48.json HTTP/1.1" 009 1044 "https://ruby-trail.com/groups/18" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36"
当我直接访问 Rails 服务器时没有问题,只有 Nginx 设置我得到 upstream sent no valid HTTP/1.0 header 错误。
请让我知道我在哪里犯了错误。 提前致谢。
【问题讨论】:
标签: ruby-on-rails ajax nginx load-balancing reverse-proxy