gpt4 book ai didi

Nginx错误: (13: Permission denied) while connecting to upstream

转载 作者:行者123 更新时间:2023-12-03 07:33:25 24 4
gpt4 key购买 nike

我在我的 nginx-error.log 文件中收到此错误:

2014/02/17 03:42:20 [crit] 5455#0: *1 connect() to unix:/tmp/uwsgi.sock failed (13: Permission denied) while connecting to upstream, client: xx.xx.x.xxx, server: localhost, request: "GET /users HTTP/1.1", upstream: "uwsgi://unix:/tmp/uwsgi.sock:", host: "EC2.amazonaws.com"

浏览器还显示 502 Bad Gateway 错误。 curl 的输出是相同的,Bad Gateway html

我尝试通过将 /tmp/uwsgi.sock 的权限更改为 777 来修复此问题。但没有成功。我还将自己添加到了 www-data 组(几个看起来类似的问题表明了这一点)。另外,没有骰子。

这是我的 nginx.conf 文件:

nginx.conf

worker_processes 1;
worker_rlimit_nofile 8192;

events {
worker_connections 3000;
}

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

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;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

我正在使用 Nginsx 和 Uwsgi 运行 Flask 应用程序,只是为了彻底解释我的解释。如果有人有任何想法,我将非常感激。

<小时/>

编辑

我被要求提供我的 uwsgi 配置文件。所以,我从来没有亲自编写过我的 nginx 或 uwsgi 文件。我按照指南here进行操作它使用 ansible-playbook 设置一切。 nginx.conf 文件是自动生成的,但 /etc/uwsgi 中没有任何内容,除了两个 apps 中的 README 文件 - enabledapps-available 文件夹。我需要为 uwsgi 创建自己的配置文件吗?我的印象是 ansible 处理了所有这些事情。

我相信,自从我运行此命令以来,ansible-playbook 就确定了我的 uwsgi 配置

uwsgi -s /tmp/uwsgi.sock -w my_app:app

它启动并输出:

*** Starting uWSGI 2.0.1 (64bit) on [Mon Feb 17 20:03:08 2014] ***
compiled with version: 4.7.3 on 10 February 2014 18:26:16
os: Linux-3.11.0-15-generic #25-Ubuntu SMP Thu Jan 30 17:22:01 UTC 2014
nodename: ip-10-9-xxx-xxx
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /home/username/Project
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 4548
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
Python version: 2.7.5+ (default, Sep 19 2013, 13:52:09) [GCC 4.8.1]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x1f60260
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 72760 bytes (71 KB) for 1 cores
*** Operational MODE: single process ***
WSGI app 0 (mountpoint='') ready in 3 seconds on interpreter 0x1f60260 pid: 26790 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 26790, cores: 1)

最佳答案

出现权限问题是因为uwsgi将/tmp/uwsgi.sock的所有权和权限重置为755,并且每次uwsgi启动时用户都运行uwsgi。

解决问题的正确方法是让uwsgi更改/tmp/uwsgi.sock的所有权和/或权限,以便nginx可以写入该套接字。因此,存在三种可能的解决方案。

  1. 以 www-data 用户身份运行 uwsgi,以便该用户拥有其创建的套接字文件。

    uwsgi -s /tmp/uwsgi.sock -w my_app:app --uid www-data --gid www-data
  2. 更改套接字文件的所有权,以便 www-data 拥有它。

    uwsgi -s /tmp/uwsgi.sock -w my_app:app --chown-socket=www-data:www-data
  3. 更改套接字文件的权限,以便 www-data 可以对其进行写入。

    uwsgi -s /tmp/uwsgi.sock -w my_app:app --chmod-socket=666

我更喜欢第一种方法,因为它不会让 uwsgi 以 root 身份运行。

前两个命令需要以 root 用户身份运行。第三条命令不需要以 root 用户身份运行。

第一个命令让 uwsgi 以 www-data 用户身份运行。第二个和第三个命令让 uwsgi 作为运行该命令的实际用户运行。

第一个和第二个命令仅允许 www-data 用户写入套接字。第三个命令允许任何用户写入套接字。

我更喜欢第一种方法,因为它不会让 uwsgi 以 root 用户身份运行,并且不会使套接字文件全局可写。

关于Nginx错误: (13: Permission denied) while connecting to upstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21820444/

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