gpt4 book ai didi

sockets - Nginx 找不到 Unicorn 的 unix 套接字文件(没有这样的文件或目录)

转载 作者:行者123 更新时间:2023-12-02 05:15:29 24 4
gpt4 key购买 nike

我正在使用 Nginx 和 Unicorn 将 Rails 4 应用程序部署到 Fedora 19 x64 服务器。问题是我在访问该地址时收到错误:“我们很抱歉,但出了点问题。”

我的 Nginx 错误日志 (/var/log/nginx/error.log) 显示:

2014/03/08 03:50:12 [warn] 23934#0: conflicting server name "localhost" on 0.0.0.0:80, ignored
2014/03/08 03:50:12 [warn] 23936#0: conflicting server name "localhost" on 0.0.0.0:80, ignored
2014/03/08 03:50:14 [crit] 23939#0: *1 connect() to unix:/tmp/unicorn.[app name].sock failed (2: No such file or directory) while connecting to upstream, client: [client IP], server: localhost, request: "GET /v1/industries/1.xml HTTP/1.1", upstream: "http://unix:/tmp/unicorn.[app name].sock:/v1/industries.json", host: "api.[app name].ca"

据我所知,Nginx 并不知道套接字存在。然而,查看/tmp,它确实:

[root@localhost tmp]# ls
unicorn.[app name].sock

无论我如何修改 Unicorn 配置文件或 Nginx 配置文件,我总是陷入困境。两者都受到攻击:

/var/www/[应用程序名称]/config/unicorn.rb:

working_directory "/var/www/[app name]"
pid "/var/www/[app name]/pids/unicorn.pid"
stderr_path "/var/www/[app name]/log/unicorn.log"
stdout_path "/var/www/[app name]/log/unicorn.log"
listen "/tmp/unicorn.[app name].sock"
worker_processes 2
timeout 30

/etc/nginx/conf.d/default.conf:

upstream app {
server unix:/tmp/unicorn.[app name].sock fail_timeout=0;
}
server {
listen 80;
server_name localhost;
root /var/www/[app name]/public;
try_files $uri/index.html $uri @app;
location @app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}

我启动这两个守护进程的方式如下:

unicorn_rails -c /var/www/[app name]/config/unicorn.rb -D -E production
service nginx start

Unicorn 日志不包含相关信息,生产日志也不包含相关信息。这个设置看起来很简单,以前有人经历过吗?感谢您提供的任何帮助。

顺便说一句,我最初是按照本教程学习的:https://www.digitalocean.com/community/articles/how-to-deploy-rails-apps-using-unicorn-and-nginx-on-centos-6-5

最佳答案

经过几个小时和总共 3 杯啤酒,我终于解决了这个问题。经过几个小时的挖掘,我终于发现了这个Server Fault answer

用外行的话来说,似乎在 /tmp (或我发现的 /var/tmp)中创建文件的程序是唯一能够查看该目录中的文件。 Unicorn 正在创建 UNIX 套接字文件,但 Nginx 无法看到它。

我采用的解决方案是让 Unicorn 在 /var/sockets 中创建套接字。

关于sockets - Nginx 找不到 Unicorn 的 unix 套接字文件(没有这样的文件或目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22272943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com