当前位置: 首页 > 知识库问答 >
问题:

nginx无法找到带Unicorn的unix套接字文件

杨成礼
2023-03-14

我已经检查了应用程序,一切接缝都很好(代码和应用程序配置明智),服务器,数据库也可以,在日志中我得到了这个错误,我已经看了这个Nginx找不到unix套接字文件与Unicorn(没有这样的文件或目录),但我真的不知道从哪里开始才能实现“只需修改独角兽配置文件中的监听变量。例如:听"/var/套接字/Unicorn.[应用程序名称]. sock",然后配置Nginx来代理服务器到该套接字文件的所有连接,如服务器unix:/var/套接字/Unicorn.[应用程序名称]. sockfail_timeout=0;"如果有人能给我指一些方向如何做到这一点将是伟大的。

我更改了文件,但仍遇到相同的错误,我的配置文件是(出于保密原因,我删除了部分文件):

root = ""
working_directory root
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.log"
stdout_path "#{root}/log/unicorn.log"

listen "/var/sockets/unicorn.camicase.sock"
worker_processes 2
timeout 30

和nginx配置

upstream unicorn {
  server unix:/var/sockets/unicorn.camicase.sock fail_timeout=0;
}

server {
   listen         80;
   server_name    _;
   rewrite        ^ https://$host$request_uri? permanent;
}

server {
  listen 443;
  server_name 
  root 

  ssl on;
  ssl_certificate         
  ssl_certificate_key     

  ssl_session_timeout  5m;

  ssl_protocols  SSLv2 SSLv3 TLSv1;
  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unicorn;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

共有1个答案

谭向晨
2023-03-14

因此,最终让系统启动并运行起来,对于所有面临类似问题的人,在不了解unicorn或Nginx的情况下,以下是步骤:

首先确保两个服务都在运行(Unicorn是应用服务器,nginx是超文本传输协议服务器),两个服务都应该在 /etc/init.d/.配置

停止这两项服务。

在selinux中检查您的策略,这里有一个很好的问题,关于如何处理PHP nginx error connect to php5 fpm中的相同错误。sock失败(13:权限被拒绝),其目的是确保selinux不会干扰套接字的读取过程(套接字由unicorn创建,由nginx读取)

然后你必须编辑你的配置文件unicorn.rb和nginx.conf,都应该指向一个不同的文件夹tmp的套接字这里是为什么https://serverfault.com/questions/463993/nginx-unix-domain-socket-error/464025#464025

最后我的配置是这样的:

nginx配置文件的一部分

upstream unicorn {
  server unix:/home/myuser/apps/myapp/shared/socket/unicorn.camicase.sock fail_timeout=0;
}

unicorn配置文件的一部分

listen "/home/deployer/apps/stickystreet/shared/socket/unicorn.camicase.sock"

然后启动unicorn和nginx,如果在连接到上游时出现(13:权限被拒绝)错误,只需执行sudo chmod 775套接字/更改unicorn套接字要存储的任何文件夹的套接字,然后重新启动nginx服务。

 类似资料:
  • 我试图创建一个Unix套接字数据报示例。客户端可以流畅地发送和接收消息。在缓冲区长度小于< code>SOCKET_BUFFER_SIZE的情况下,服务器能够做到这一点,否则服务器的输出会在接收的缓冲区显示一些无效字符。 客户代码 服务器的代码 头文件 这是我得到的 奇怪的是,客户端收到了预期的消息,尽管服务器在发送之前没有正确格式化消息。 这是我的预期输出 我该如何解决?

  • 在nodeJS应用程序中,我希望通过其UNIX套接字。我用这个包裹https://mongodb.github.io/node-mongodb-native/?jmp=docs(版本3.1.6),通过这种方式: 此处的文档中引用了URI:https://docs.mongodb.com/manual/reference/connection-string/#unix-域套接字。但在我的例子中,它失

  • Nginx 1.1.4可用于与HTTP1的上游连接。1 keepalive指令,请参阅官方文档(它与keepalive客户端的连接不同)。所以独角兽的配置可以如下所示: HTTP连接需要这些标头:proxy_http_version和proxy_set_header。 所以问题是配置有效还是套接字连接本身是永久的?

  • 问题内容: 当我使用套接字编程传输大文件时,收到的文件不完整,即它是一个mp3文件,当我播放时听起来很奇怪。代码是: 服务器端: 客户端: 在客户端,我只是为了简化而使用(我可以从服务器端发送文件的长度)。 如果客户端和服务器是同一台机器,则此代码可以完美地工作,但是如果它们位于不同的机器上,则文件会失真。 问题答案: 在Java中复制流的规范方法: 适用于大于零的任何缓冲区大小。应避免避免将缓冲

  • 问题内容: 我在Linux上使用 --skip-networking 选项使用MySQL 。 尝试使用JDBC将基于J2EE的应用程序(使用servlet)连接到MySQL数据库。 使用 禁用* 了 --skip-networking 选项的MySQL时,我以以下方式连接到数据库: * 启用 --skip-networking 选项后,我尝试将其连接为: 但这似乎不起作用,当我尝试连接到应用程序中

  • 我正在尝试使用UDP在Android上创建一个unix域套接字服务器和客户端。我需要客户端向服务器发送一条消息(“hi”),然后从服务器上向客户端发送数据。我已经成功地在两边创建了套接字,并且我能够在服务器上从客户端接收到一条短消息。然而,服务器上的recvfrom(…)没有填充结构体套接字*src_addr,socklen_t*addrlen参数。使用这些src_addr和addrlen的后续s