nginx는 마운트 된 / usr / share / nginx / html을 읽지 않습니다.


0

골:

나는 원격 SSHFS 파일 시스템을 마운트하는 NGINX 컨테이너를 사용하고있다. / usr / share / nginx / html , 목적은 매번 새로운 무국적 nginx 컨테이너를 사용하지만 동일한 지속적인 컨텐트를 사용하는 것입니다.

수행 된 단계 :

- SSHFS 서버가 작동하고 있는지 확인하십시오.
nginx 컨테이너 (sshfs 클라이언트)에서 원격 sshfs 파일 시스템을 / usr / share / nginx / html에 마운트했습니다.

/ # sshfs  root@X.X.106.181:/data /usr/share/nginx/html
root@X.X.106.181's password:  / #

- 마운트는 괜찮아 보인다.

/ # mount | grep sshfs

root@35.185.106.181:/data on /usr/share/nginx/html type fuse.sshfs
(rw,nosuid,nodev,relatime,user_id=0,group_id=0)  

/ # df -h
Filesystem                 Size  Used Avail Use% Mounted on  
rootfs                     886G  681G  161G  81% /  
none                       886G  681G  161G  81% /  
tmpfs                      7.9G     0  7.9G   0% /dev  
tmpfs                      7.9G     0  7.9G   0% /sys/fs/cgroup  
/dev/sda1                  886G  681G  161G  81% /gns3  
shm                         64M     0   64M   0% /dev/shm  
root@X.X.106.181:/data  976M  2.6M  907M   1% /usr/share/nginx/html  

거기에 파일 몇 개를 놓고 모두가 읽을 수있게해라 :

/ # ls -la /usr/share/nginx/html

total 36 drwxr-xr-x 1 root root  4096 Aug 20 11:48 . drwxr-xr-x 5 root
root  4096 Aug 20 11:36 ..
-rw-r--r-- 1 root root   537 Aug 20 11:48 50x.html
-rw-r--r-- 1 root root   612 Aug 20 11:48 index.html  
drwx------ 1 root root 16384 Aug 20 11:23 lost+found
-rw-r--r-- 1 root root   310 Aug 20 11:48 test.php

원하는 결과 :

새로운 nginx 컨테이너가 무엇이든, 나는 원격 SSHFS를 마운트하고 나는 사용자가 브라우징 한 동일한 정보를 가지고있다.

얻은 결과 :

Nginx는 / usr / share / nginx / html의 내용을 읽지 않습니다. 인덱스 파일이 없으므로 작동합니다.
브라우저에 아무것도 나타나지 않습니다.

enter image description here


nginx 로그 :

/ # tail /var/log/nginx/error.log
2017/08/20 15:47:16 [crit] 139#0: *3 stat() "/usr/share/nginx/html/" failed (13: Permission denied), client: 192.168.122.247, server: ajnouri.local, request: "GET / HTTP/1.1", host: "192.168.122.100"  
2017/08/20 15:47:16 [crit] 139#0: *3 stat() "/usr/share/nginx/html/404.html" failed (13: Permission denied), client: 192.168.122.247, server: ajnouri.local, request: "GET / HTTP/1.1", host: "192.168.122.100"  
2017/08/20 15:47:16 [crit] 139#0: *3 stat() "/usr/share/nginx/html/404.html" failed (13: Permission denied), client: 192.168.122.247, server: ajnouri.local, request: "GET / HTTP/1.1", host: "192.168.122.100"  

"www-data"가 디렉토리에 쓸 필요가있는 것 같습니다.

############### UPDATE

따라서 "www-data"사용자를 서버의 일반 사용자처럼 관리 할 수 ​​있었으며 sshfs 클라이언트는 "www-data"를 사용하여 "/ var / www"를 마운트하는 데 성공했습니다.

서버에서 "www-data"홈 디렉토리 (/ var / www)의 소유자를 www-data : www-data로 변경했습니다.

/ # chown -R www-data : www-data / var / www

/ # ls -la /var/www
total 36
drwxr-xr-x 1 www-data www-data  4096 Aug 20 11:48 .
drwxr-xr-x 5 root     root      4096 Aug 20 11:36 ..
-rw-r--r-- 1 www-data www-data   537 Aug 20 11:48 50x.html
-rw-r--r-- 1 www-data www-data   612 Aug 20 11:48 index.html
drwx------ 1 www-data www-data 16384 Aug 20 11:23 lost+found
-rw-r--r-- 1 www-data www-data   310 Aug 20 11:48 test.php

##############

문제를 해결하지 않는 것 같습니다.


Nginx 컨테이너 (sshfs 클라이언트)와 sshfs 서버는 동일한 OS를 사용합니다 :

/ # lsb_release -a

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

2
어떤 오류가 nginx 서버 로그에 표시됩니까?
Jakuje

@ Jakuje에게 감사합니다. 나는 로그를 잊었다. 질문에 추가됨.
AJN

nginx 사용자의 권한으로 디렉토리를 마운트하는 것이 좋을지 모르겠다. 오류는 분명히 (어떤 이유로 든) 그것을 읽을 수 없다는 것입니다.
Jakuje

@Jakuje 디렉토리의 소유자를 www-data : www-data로 변경했으나 문제가 해결되지 않았습니다.
AJN

답변:


0
  1. 다음과 같이 www-data로 sshfs를 마운트하십시오. 이리
  2. sshfs 외부에서 루트 디렉토리를 설정하고 사이트에 연결하십시오.
  3. 구성에 행이 있는지 확인하십시오.

    색인 index.html index.htm;

또는 전체 링크로 사이트에 연결하십시오 (예 : 192.168.0.20/index.html).

  1. 꼬리 -f nginx 액세스 및 오류 로그

안녕하세요 @Quarind, 저는 "www-data"사용자 (일반 사용자)를 사용하여 sshfs 서버에 마운트하고 서버의 홈 디렉토리 소유권을 "www-data"로 변경했습니다. 변경 사항 없음, 여전히 허가 거부 됨
AJN

0

미래에 도움이 될 수있는 사람들을 위해, 나는이 문제를 가지고 있었고 조금 더 검색 한 후에 나는 -o allow_other 그것이 작동하도록 마운트 된 마운트 콜에

후드 아래에서 무엇이 수행되고 있는지 또는 왜 필요한지 (uid 또는 gid 설정은 아무 것도하지 않음) 생각할 필요가 없습니다.하지만 거기에 대해 알아 보겠습니다.

출처: https://stackoverflow.com/questions/29330382/how-to-enable-writing-to-sshfs-directory-in-php

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.