Dlaczego Nginx zwraca 403, mimo że wszystkie uprawnienia są ustawione poprawnie?

Mam konfigurację Nginx i prawidłowe wyświetlanie strony testowej. Jeśli próbuję zmienić ścieżkę główną, dostaję zakazany błąd 403, mimo że wszystkie uprawnienia są identyczne. Dodatkowo istnieje użytkownik nginx.

Nginx.conf:

user nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;

pid        /run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    index   index.html index.htm;

    server {
        listen       80;
        server_name  localhost;
        root         /var/www/html; #changed from the default /usr/share/nginx/html
    }
}

Namei-om /usr/share/nginx/html/index.html

f: /usr/share/nginx/html/index.html
dr-xr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html

Namei-om / var / www / html / index.html

f: /var/www/html/index.html
dr-xr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root www
drwxr-xr-x root root html
-rw-r--r-- root root index.html

Dziennik Błędów

2014/03/23 12:45:08 [błąd] 5490 # 0: * 13 otwórz() "/var / www / html / index.html " failed (13: Odmowa zgody), klient: XXX. XXX. XXX, server: localhost, request: "GET / index.html HTTP / 1.1", host: "ec2-XXX-XX-XXX-XXX.compute-1.amazonaws.com"

Author: Adam Pearlman, 2014-03-23

15 answers

Doświadczyłem tego samego problemu i było to spowodowane SELinux .

Aby sprawdzić, czy SELinux jest uruchomiony:

# getenforce

Aby wyłączyć SELinux do następnego restartu:

# setenforce Permissive

Uruchom ponownie Nginx i sprawdź, czy problem nadal występuje. Jeśli chcesz trwale zmienić ustawienia, możesz edytować /etc/sysconfig/selinux

Jeśli SELinux jest Twoim problemem, możesz uruchomić następujące czynności, aby umożliwić nginx serwowanie Twojego katalogu www (upewnij się, że ponownie włączyłeś SELinux przed testowaniem tego. i. e, # setenforce Enforcing)

# chcon -Rt httpd_sys_content_t /path/to/www

Jeśli nadal masz problemy, spójrz na flagi logiczne w getsebool -a, w szczególności może być konieczne włączenie httpd_can_network_connect dla dostępu do sieci

# setsebool -P httpd_can_network_connect on

Dla mnie wystarczyło, aby http mógł obsługiwać mój katalog www.

 209
Author: Kurt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-07 03:29:42

Natknąłem się na ten sam problem. Jeśli używasz Fedory / RedHat / CentOS, może Ci to pomóc:

  • według SELinux: setsebool -P httpd_read_user_content 1
Mam nadzieję, że to pomoże.
 6
Author: Bryan Macías,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-16 00:49:40

Nginx ma dostęp do systemu plików, w którym znajduje się system plików.]}

sudo setsebool -P httpd_read_user_content 1

Możesz sprawdzić, czy pliki lub katalog za pomocą następującego polecenia:

ls -Z

Jeśli nadal nie jest dostępny, możesz spróbować zmienić właściwość SELinux plików i folderu za pomocą następującego polecenia:

chcon -Rt httpd_sys_content_t /path/to/www

Powyższe polecenie nie może jednak dotyczyć plików w systemie FUSE lub NFS.

Aby włączyć obsługę plików z bezpieczników, możesz użyć:

setsebool httpd_use_fusefs 1

Do włącz obsługę plików z montowań NFS, możesz użyć:

setsebool httpd_use_nfs 1
 6
Author: Terry Lam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 08:17:10

To jest dodatek do odpowiedzi Prowlas, ale nie mam wystarczającej reputacji, aby pochwalić: Jeśli /path/to/www jest katalogiem domowym użytkownika. Powinieneś spróbować:

setsebool -P httpd_enable_homedirs=1

To rozwiązało mój problem

Źródło: http://forums.fedoraforum.org/archive/index.php/t-250779.html

 3
Author: rassi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-10 13:48:02

Istnieją 2 możliwe powody odmowy dostępu:

  1. Dostęp jest zabroniony przez DAC . Sprawdź dwukrotnie uprawnienia użytkowników, grup i plików. Upewnij się, że proces nginx, uruchomiony jako użytkownik określony w pliku konfiguracyjnym, może uzyskać dostęp do nowej ścieżki głównej html.

  2. Dostęp jest zabroniony przezMAC . Najczęściej używanym z nich jest SELinux. Aby sprawdzić, czy to spowodowało problem, możesz zatrzymać proces nginx i uruchomić tę komendę:

    setenforce Permissive
    

    Wtedy uruchom ponownie nginx, aby sprawdzić, czy dostęp został przyznany.

    Alternatywnie możesz sprawdzić kontekst pliku:

    setenforce Enforcing
    ls -Zd /usr/share/nginx/html /var/www/html
    

    Jeśli oba konteksty różnią się, może być konieczna zmiana kontekstu dla nowej ścieżki głównej html:

    chcon -R -t httpd_sys_content_t /var/www/html
    
    Uruchom ponownie nginx i sprawdź, czy działa poprawnie. Jeśli tak, możesz zmienić na stałe:
    semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'
    restorecon -Rv /var/www/html
    

    Niektóre z tych poleceń muszą być uruchamiane jako root.

 3
Author: Cyker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-19 11:28:41

Wydaje się logiczne, wszystkie pliki są użytkownikiem roota, spróbuj zmienić go na użytkownika nginx, po prostu chciałem się upewnić, że nie jest to pierwsza Odmowa uprawnień na liście.

sudo chown -R nginx:nginx /var/www/html
 2
Author: Mohammad AbuShady,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-23 12:57:31

Napotkałem ten problem, gdy dodałem nowego Użytkownika z folderem /home/new_user jako nowy host wirtualny. Upewnij się, że te foldery (/home, /home/new_user, /home/new_user/xxx...) są 755 tak, że to rozwiązało mój problem. W końcu okazało się, że mój problem był poprawnie zgodny z plikiem /var/log/nginx/error.log.

 2
Author: loszer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-02 21:30:03

Pamiętaj, że musisz pozwolić innym użytkownikom na przeczytanie całej ścieżki. Pamiętaj również, że Dropbox ustawi 700 w swoim katalogu głównym. Więc chmod 755 ~/Dropbox rozwiązałem mój problem.

 2
Author: Michael Ma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 02:49:28

Używałem:

sudo service nginx start

Jeśli użyję:

sudo nginx 

...wszystko działa dobrze. Czy ktoś może wyjaśnić różnicę między tymi dwoma?

 1
Author: Adam Pearlman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-23 18:39:59

Natknąłem się na ten sam problem:

  • sprawdzony nginx.conf do weryfikacji użytkownika
  • uprawnienia zostały ustawione poprawnie
  • upewniłem się, że " X " jest ustawione w prawo dla całej ścieżki

Wykonałem restart z linii poleceń (cały czas używałem Webmin) i zauważyłem ten błąd:

 aed@aed:/var/www/test.local$ sudo service nginx restart
 * Restarting nginx nginx 
nginx: [warn] conflicting server name "test.local" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "test.local" on 0.0.0.0:80, ignored

Najwyraźniej była duplikat definicji i stąd moja próba dostępu do " testu.lokalne " nie powiodło się.

 1
Author: dougB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-30 01:39:06

Ludzie używający katalogu /home/{user} do obsługi swojej strony internetowej muszą zapewnić dostęp chmod 755 w katalogu /home/{user}, aby to działało .

Ponadto , jeśli SELinux jest włączony na serwerze, należy użyć poniższych poleceń :-

  1. sudo setsebool-P httpd_can_network_connect on
  2. chcon-RT httpd_sys_content_t /path / to / www
 1
Author: animo3991,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-09 10:36:43

Jak dla mnie działa na nginx]}

semanage permissive -a httpd_t
 0
Author: Makara Set,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-05 02:51:17

Innym możliwym powodem (nie w tym przypadku) jest dowiązanie symboliczne do indeksu.plik html wskazujący na inny katalog.

Ls-lrt / usr / share/nginx / html /

Tutaj wpisz opis obrazka

Pliki Rsync do tego konkretnego katalogu z łatwością rozwiążą problem.

Jest to bardzo proste.conf
http {
    disable_symlinks off;
}
 0
Author: Ashfaq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-05 12:01:30

Zmodyfikuj plik nginx.conf, Zmień nazwę Użytkownika na nazwę konta i uruchom ponownie nginx.it praca !

 -1
Author: zhuoming,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-01 07:52:26

To rozwiązało ten sam problem:

Uruchom ponownie Nginx i spróbuj ponownie. Jeśli się nie powiedzie, sprawdź ponownie dzienniki. This worked for me
 -9
Author: mauva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-22 15:07:12