Nginx डाउनलोड permissions त्रुटि - खुला() विफल (13: अनुमति का निषेध)

0

सवाल

मैं एक वेबपेज के साथ Nginx + Uwsgi + Django जहां मैं एक बाहरी पथ कहा जाता है /download का प्रबंधन करने के लिए डाउनलोड में Django के (उपयोगकर्ता क्रेडेंशियल्स) और आंतरिक पथ /download-nginx करने के लिए वास्तव में फ़ाइलों को डाउनलोड निर्देशिका पर /var/wwww/download. की खातिर के लिए परीक्षण, मैं करने की कोशिश की है इस के साथ अपने उपयोगकर्ता नाम के रूप में अच्छी तरह से डिफ़ॉल्ट के रूप में nginx उपयोगकर्ता. उन दोनों के साथ मुझे अनुमति से इनकार त्रुटि पर Nginx:

open() "/var/www/download/example.txt" failed (13: Permission denied)

मैं पढ़ लिया है कई अन्य समाधान पर तो कह रही है कि समस्या है कि प्रदान की जाती उपयोगकर्ता में nginx.conf के पास नहीं है पर्याप्त अनुमतियाँ हैं । बात यह है कि वे पर्याप्त permissions:

$ sudo -u nginx stat /var

  File: ‘/var’
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: 802h/2050d      Inode: 50331745    Links: 21
Access: (0777/drwxrwxrwx)  Uid: (  996/   nginx)   Gid: (    0/    root)
Context: system_u:object_r:var_t:s0
Access: 2021-11-23 11:24:53.329927606 +0000
Modify: 2021-11-23 09:43:29.250244353 +0000
Change: 2021-11-23 11:21:37.151148760 +0000

इसके अलावा, बस के मामले में मैं किया है chmod 777 बारी बारी से निर्देशिका पर /var/wwww/download

मेरे nginx.conf फ़ाइल के रूप में निम्नानुसार है:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

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

    client_max_body_size 128M;
    proxy_max_temp_file_size 0;
    proxy_buffering off;
    server_names_hash_bucket_size 256;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    upstream django {
        server 127.0.0.1:8000;
    }

    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

    location /download-nginx {
            internal;
            alias /var/www/download;
            sendfile on;
            proxy_max_temp_file_size 0;
    }

    location / {
        uwsgi_pass django;
        proxy_read_timeout 300s;
        proxy_connect_timeout 75s;
        uwsgi_param Host $host;
        uwsgi_param X-Real-IP $remote_addr;
        uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
        uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;

        uwsgi_param QUERY_STRING $query_string;
        uwsgi_param REQUEST_METHOD $request_method;
        uwsgi_param CONTENT_TYPE $content_type;
        uwsgi_param CONTENT_LENGTH $content_length;
        uwsgi_param REQUEST_URI $request_uri;
        uwsgi_param PATH_INFO $document_uri;
        uwsgi_param DOCUMENT_ROOT $document_root;
        uwsgi_param SERVER_PROTOCOL $server_protocol;
        uwsgi_param HTTPS $https if_not_empty;
        uwsgi_param REMOTE_ADDR $remote_addr;
        uwsgi_param REMOTE_PORT $remote_port;
        uwsgi_param SERVER_PORT $server_port;
        uwsgi_param SERVER_NAME $server_name;
    }

    error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

}

डाउनलोड पर देखें मेरे Django वेबपेज के रूप में निम्नानुसार है, हालांकि (त्रुटि मैं बहुत यकीन है कि नहीं है पर इस टुकड़ा):

def download(request):
    # Auth code is ommitted #
    response = HttpResponse()
    path = "/var/www/download/example.txt"
    name = "example.txt"
    response['Content-Length'] = os.path.getsize(path)
    response['X-Accel-Redirect'] = "/download-nginx/{0}".format(name)
    del response['Content-Type']
    del response['Content-Disposition']
    del response['Accept-Ranges']
    del response['Set-Cookie']
    del response['Cache-Control']
    del response['Expires']
    return response

इसलिए, मेरा सवाल है: क्या मुझे क्या करना चाहिए मेरी Centos मशीन में सक्षम होने के लिए आदेश का उपयोग करने के लिए डेटा पर /var/www/download और यह प्रदान करने के लिए उपयोगकर्ताओं के रूप में डाउनलोड करने योग्य तत्वों?

centos7 django nginx uwsgi
2021-11-23 14:40:17
1

सबसे अच्छा जवाब

0

समस्या का हल: Nginx की जरूरत है +x अनुमति से प्रत्येक पर निर्देशिका. इस के साथ हल किया गया था:

sudo chmod +x /var
sudo chmod +x /var/www
sudo chmod +x /var/www/download
2021-11-23 16:13:23

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................