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"
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.
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
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
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
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:
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.
-
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:
Uruchom ponownie nginx i sprawdź, czy działa poprawnie. Jeśli tak, możesz zmienić na stałe:chcon -R -t httpd_sys_content_t /var/www/html
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.
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
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
.
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.
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?
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ę.
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ń :-
- sudo setsebool-P httpd_can_network_connect on
- chcon-RT httpd_sys_content_t /path / to / www
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
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 /
Pliki Rsync do tego konkretnego katalogu z łatwością rozwiążą problem.
Jest to bardzo proste.confhttp {
disable_symlinks off;
}
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 !
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 meWarning: 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