Permesso negato durante la lettura a monte

Abbiamo distribuito la nostra applicazione di rotaie su su nginx e passeggero. Pagine pagine di applicazione inutilizzabili vengono caricate parzialmente. Non esiste alcun errore nel registro di applicazione. Ma il log degli errori nginx mostra quanto segue:

2011/02/14 05:49:34 [crit] 25389#0: *645 open() "/opt/nginx/proxy_temp/2/02/0000000022" failed (13: Permission denied) while reading upstream, client: xxxx, server: yyyy, request: "GET /signup/procedures?count=0 HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "yyyy", referrer: "http://yyyy/signup/procedures"

  • Impostazioni Nginx, HAproxy, Unicorn, Rails e Node
  • Utilizza Nginx come proxy inverso per più server
  • Nginx annullando in silenzio linee di intestazione che superano 1128 byte
  • Rimozione della barra di traccia da un URL con nginx
  • La nginx consente a un server upstream di rispondere e chiudere una richiesta prima di terminare?
  • Come forzare nginx per risolvere il DNS (di un nome host dinamico) each volta che si esegue proxy_pass?
  • Il Benchmark di Apache è lento dalla networking pubblica, più velocemente localmente. Quali sono le cose che faccio per accelerare questo process?
  • Se i risultati AB esterni sono 200 rps e AB interno gestisce 3 k rps, posso gestire solo 200 (limitato dalla velocità in output) o 3 k?
  • 6 Solutions collect form web for “Permesso negato durante la lettura a monte”

    Ho avuto lo stesso problema su un setup NGINX / PHP-FPM (php-fpm = migliorato fcgi per php).

    Puoi scoprire quale utente i processi di nginx stanno funzionando come

     ps aux | grep "nginx: worker process" 

    E poi verificare se le autorizzazioni nei file proxy sono corretti

     ls -l /opt/nginx/proxy_temp/ 

    Nel mio caso, nginx era in esecuzione come www-data e due delle directory nella mia directory proxy appartenevano alla radice.

    Non so come sia successo ancora, ma l'ho fatta facendo (come root)

     chown www-data.www-data /opt/nginx/proxy_temp 

    Controllare inoltre il file nginx.conf per assicurarsi di specificare il gruppo AND utente corretto.

    Ho avuto un problema in cui le autorizzazioni nella directory sono state impostate per username / nginx, ma l'utente nginx.conf ha specificato solo il nome utente. Per impostazione predefinita, se nessun gruppo viene assegnato alla direttiva utente, utilizza lo stesso nome dell'utente. Quindi, username / username cercava di accedere a una directory anziché username / nginx. L'aggiornamento della configuration ha risolto i miei problemi.

    Vedi: http://nginx.org/en/docs/ngx_core_module.html#user

    Probabilmente avete iniziato con la radice dell'utente, quindi avete cambiato. Ora il problema è che le cartelle di cache, cioè

     /var/cache/nginx/client_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/proxy_temp /var/cache/nginx/scgi_temp /var/cache/nginx/uwsgi_temp 

    sono già di properties; della root, quindi il tuo nginx (o qualunque cosa stai cercando di passare) non può accedere a coz loro hanno un permesso di 700.

    Quindi la soluzione è facile. Stop nginx, allora:

     rm -rf /var/cache/nginx/* 

    o qualunque sia il path sulla tua distro e rilascio. Quindi riavviare nginx che ricreerà queste cartelle con le autorizzazioni appropriate.

    Quando si avvia nginx da un account non privilegiato use_temp_path=off .

     proxy_cache_path ... use_temp_path=off; 

    Ciò era necessario per evitare che nginx tentasse di mettere i file nel path predefinito proxy_temp_path . Dai documenti di nginx:

    La directory per i file temporanei viene impostata in base al parametro use_temp_path (1.7.10). Se questo parametro viene omesso o impostato sul valore impostato, verrà utilizzata la directory impostata dalla direttiva proxy_temp_path per la posizione specificata. Se il valore è impostato su off, i file temporanei verranno inseriti direttamente nella directory della cache.

    Così ho fatto tutto quanto sopra e purtroppo per me è stato dandomi lo stesso errore. Io sto eseguendo un app rotaie confezionato in un file di jar con torquebox su una macchina centos 6.7 con nginx. Ho combattuto questo per circa 3 ore finché ho trovato un'altra soluzione e spero che aiuta qualcun altro. Secondo questo articolo nginx può funzionare in modalità di esecuzione. Ho semplicemente cambiato nginx in modo permissivo con

     setenforce 0 

    Con questo, l'errore è andato e sono stato in grado di eseguire la mia applicazione in un ambiente di produzione / produzione.

    Sono rimasto incompiuto fino a quando ho trovato l'errore sul audit.log

     type=AVC msg=audit(1444454198.438:466): avc: denied { name_connect } for pid=3201 comm="nginx" dest=8080 scontext=unborderd_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_cache_port_t:s0 tclass=tcp_socket 

    Spero davvero che questo salva qualcuno le 3 ore che ho appena perso.

     chmod 777 /opt/nginx/proxy_temp/ 

    Ho avuto lo stesso problema e ho risolto da chmod in quella directory.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.