我有一台服务器运行一个非常简单的rails应用程序。它已nginx
设置为侦听端口80
,它会将请求转发到unicorn
下的(Rails.root)/tmp/unicorn.sock
套接字文件。
我从domain.com购买了一个域名,并将其指向我服务器的地址=。
e.g。
Domain: mydomain.com -> Server: 110.56.45.12
当我直接点击服务器时,通过访问浏览器中的110.56.45.12
或ssh
- 进入框并运行curl 127.0.0.1
,一切正常。我认为这是因为这两个操作都在端口80
上运行,而nginx
会回送正确的内容。
但是,当我尝试使用公共域名domain.com
或尝试使用curl localhost
时,我会获得经典"我们很抱歉,但出了点问题。" rails page。
我检查了导航production
日志,那里什么都没有。然后,我在nginx
处检查了/var/log/nginx/error.log
错误日志,但只获得了
2015/05/27 07:01:24 [error] 20041#0: *143 connect() to unix:/home/jeeves/my_app/tmp/unicorn.sock failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: mydomain.com, request: "GET / HTTP/1.1", upstream: "http://unix:/home/jeeves/my_app/tmp/unicorn.sock:/", host: "localhost"
我的服务器是否有任何理由拒绝该连接?
谢谢!
修改
这是我的nginx.conf
文件
user jeeves;
worker_processes 1;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay off;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
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;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_http_version 1.1;
gzip_proxied any;
gzip_min_length 500;
gzip_types text/plain text/xml text/css
text/comma-separated-values text/javascript
application/x-javascript application/atom+xml;
##
# Unicorn Rails
##
upstream unicorn {
server unix:/home/jeeves/my_app/tmp/unicorn.sock fail_timeout=0;
}
##
# Includes
##
include /etc/nginx/sites-enabled/*;
}
最后一行包含sites-enabled
目录中的所有内容,该目录只有一个文件 - mydomain.com
server {
listen 80;
server_name mydomain.com; # Replace this with your site's domain.
keepalive_timeout 300;
client_max_body_size 4G;
# Set this to the public folder location of your Rails application.
root /home/jeeves/my_app/public;
try_files $uri/index.html $uri.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded_Proto $scheme;
proxy_redirect off;
# This passes requests to unicorn, as defined in /etc/nginx/nginx.conf
proxy_pass http://unicorn;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
# You can override error pages by redirecting the requests to a file in your
# application's public folder, if you so desire:
error_page 500 502 503 504 /500.html;
}