Я пытаюсь использовать nginx в качестве прокси для веб-приложения (django, работающий на Gunicorn)
server {
listen 80;
server_name registry.blabla;
error_log /var/log/nginx/registry.blabla.error.log;
access_log /var/log/nginx/registry.blabla.access.log;
location /favicon.ico { access_log off; log_not_found off; }
location /static {
root /home/xxx/registry;
}
# location / {
# try_files $uri $uri/ @backend;
# }
location / {
proxy_pass http://blabla:8989/registryadmin/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
}
}
Прокси просто работает. Я имею в виду, что проксирование веб-приложения работает. НО статические файлы веб-приложения не обслуживаются.
Смотрим логи:
==> /var/log/nginx/registry.blabla.error.log <==
2017/05/27 20:31:18 [error] 4262#0: *3 open() "/home/xxx/registry/static/admin/css/base.css" failed (13: Permission denied), client: 172.31.135.23, server: registry.blabla, request: "GET /static/admin/css/base.css HTTP/1.1", host: "registry.blabla", referrer: "http://registry.blabla/"
==> /var/log/nginx/registry.blabla.access.log <==
172.31.135.23 - - [27/May/2017:20:31:18 +0200] "GET /static/admin/css/base.css HTTP/1.1" 403 169 "http://registry.blabla/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/603.2.5 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.5"
==> /var/log/nginx/registry.blabla.error.log <==
2017/05/27 20:31:18 [error] 4262#0: *4 open() "/home/xxx/registry/static/admin/css/dashboard.css" failed (13: Permission denied), client: 172.31.135.23, server: registry.blabla, request: "GET /static/admin/css/dashboard.css HTTP/1.1", host: "registry.blabla", referrer: "http://registry.blabla/"
==> /var/log/nginx/registry.blabla.access.log <==
172.31.135.23 - - [27/May/2017:20:31:18 +0200] "GET /static/admin/css/dashboard.css HTTP/1.1" 403 169 "http://registry.blabla/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/603.2.5 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.5"
Не могли бы вы посоветовать, как можно решить эту проблему?
РЕДАКТИРОВАТЬ:
добавление контекста selinux выводит запросы в комментарии:
# ls -ldZ /home
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 /home
# ls -ldZ /home/app
drwx------. app app unconfined_u:object_r:user_home_dir_t:s0 /home/app
# ls -ldZ /home/app/registry
drwxrwxr-x. app app unconfined_u:object_r:user_home_t:s0 /home/app/registry
Ваш каталог '/ home / app' имеет разрешения '700', которые ограничивают доступ только для пользователя 'app'. Вам нужно изменить его, чтобы разрешить доступ для идентификатора пользователя, который использует процесс nginx.
Вы пробовали добавить косую черту к / static? Вы также не говорите nginx, что ему разрешено обслуживать по умолчанию из static, поэтому он не предполагает доступа.
location /static/ {
root /home/xxx/registry;
try_files $uri $uri/ =404;
}