Ich hoffe, dies ist der richtige Ort, um dies zu posten.
Ich habe einen CentOS 6 VPS, der mehrere Sites hostet. Es gibt drei vorhandene Sites, die derzeit problemlos darauf laufen, aber ich versuche jetzt, eine vierte hinzuzufügen und erhalte immer die Willkommensseite „Willkommen bei nginx auf Fedora!“, wenn ich die URL besuche (wir nennen sie nginxFail.com).
Ich habe eine Datei test.txt in /home/nginxFail/www abgelegt und versucht, zu nginxFail.com/test.txt zu gelangen. Es wurde eine 403 ausgegeben. nginxFail.com/nosuchfile.txt und nginxFail.com/nosuchdir werfen ebenfalls 403-Fehler aus.
Was ich bereits versucht habe:
-Überprüfung der Domäneninformationen: Die Domäneninformationen der neuen Domäne und der drei anderen Domänen sind genau gleich, einschließlich der SPF-Informationen. Die neue Domäne hatte etwa 5 Tage Zeit, sich zu verbreiten.
-Überprüfung von httpd.conf: Folgendes habe ich:
<VirtualHost *:80>
DocumentRoot /home/**nginxFail**/www
ServerName **nginxFail.com**
ServerName **<my server IP>**
ErrorLog /var/log/httpd/**<errorLog>**
CustomLog /var/log/httpd/access_log combined
<Directory "/home/**nginxFail**/www">
Options +Indexes FollowSymLinks +ExecCGI
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Natürlich entsprechen die fettgedruckten Einträge meinen tatsächlichen Angaben. Dies ist genau dasselbe Setup wie die anderen Einträge in dieser Datei, die die anderen drei Sites zum Laufen bringen.
Hier ist auch die komprimierte Version von /etc/nginx/nginx/conf:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# Load config files from the /etc/nginx/conf.d directory
include /etc/nginx/conf.d/*.conf;
#
# The default server
#
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
- Neustart des Servers (und /etc/init.d/httpd). Kein Glück.
-Versuch es mit einem anderen Rechner: Ich habe gelesen, dass das Problem mit Nginx durch einen Virus oder eine Hostdatei verursacht werden könnte. Meine Rechner sind immer sauber (ständige Virenscans, ich vertraue den vom Browser ausgeführten Fehlerscans nicht, haha) und meine Hostdatei scheint sauber zu sein. Nur aus Spaß habe ich versucht, die Site auf einem anderen Computer und sogar auf meinem Telefon aufzurufen, und ich habe dieselbe Nginx-Seite erhalten.
-Google: Es hat mich im Stich gelassen! :o, so habe ich von der Browser-Reinigung erfahren.
-Berechtigungen überprüfen: Auf meinem Server sind alle Sites in einem eigenen Ordner im Verzeichnis /home/ aufgelistet. Hier füge ich auch den neuen Site-Eintrag ein. Wie bereits erwähnt, funktionieren die drei anderen Sites einwandfrei, es liegt also kein Berechtigungsproblem mit /home/ vor. Außerdem habe ich sichergestellt, dass home/nginxFail/www die 755 hat (genau wie die anderen funktionierenden Sites).
- beim Blick in das Verzeichnis /etc/nginx/ ist mir aufgefallen, dass es kein Verzeichnis mit aktivierten Sites gibt. Ich habe in einer anderen Frage gesehen, dass dies die Ursache sein könnte, aber wenn das der Fall wäre, warum würden dann 3 andere Websites einwandfrei funktionieren?
-Protokolle ansehen: Ich habe in var/log eigentlich nichts gefunden, außer der Bestätigung, dass der Webserver die HTTP-Anforderung erhält und 403-Fehler ausgibt. Nachdem ich die oben erwähnte Datei test.txt besucht hatte, beobachtete ich das Protokollverzeichnis auf eine Änderung der Mod-Daten, um zu sehen, welche Dateien ich mir ansehen sollte.
- Der Site mündlich sagen, dass sie nginx nicht mehr anzeigen und bitte meine Site anzeigen soll: Kein Erfolg.
- In /etc/nginx herumstöbern: Ich habe gelesen, dass es dort ein „Sites-Available“-Verzeichnis gibt, das mir helfen sollte, aber ich sehe es nicht, wenn ich als Root angemeldet bin.
Ich bin hier etwas ratlos.
BEARBEITEN: Ich habe das Problem noch etwas genauer untersucht und es sieht so aus, als ob ein seltsamer Konflikt zwischen Apache und Nginx die Ursache ist.
Die Site verwendet Apache 2.2.23 und es scheint, dass auch nginx installiert wurde, wahrscheinlich aus Versehen. Die 403-Seiten, die ich bekomme, zeigen an, dass Apache gestartet ist, aber wenn ich zur Domäne selbst gehe, werde ich aus irgendeinem Grund zu nginx weitergeleitet. Mein natürlicher Gedanke war, nginx mit zu stoppen /etc/init.d/nginx -s stop
. Wenn ich das mache und zu nginxfail.com zurückgehe, wird die nginx-Seite immer noch angezeigt. Wenn ich das mache, ps -ef | grep nginx
kann ich einen laufenden nginx-Prozess sehen, auch nachdem ich ihn gestoppt habe, und meines Wissens sollte es auf dem Server keine Skripte geben, die ihn automatisch neu starten.
Jetzt wird es interessant: Wenn ich das mache /etc/init.d/httpd stop
, sterben ALLE 4 Sites, einschließlich nginxfail.com und den 3 anderen funktionierenden Sites, und wenn ich httpd wieder einschalte, tritt die gleiche Situation auf wie in meinem ersten Beitrag.
Ich habe in /etc/httpd/error_log nachgesehen und erhalte die Fehlermeldung „Client durch Serverkonfiguration verweigert: /home/nginxfolder/www/“. Außerdem habe ich die Berechtigungen überprüft, sodass der Webserver (ich bin ziemlich sicher, dass es in diesem Fall Apache ist) an der richtigen Stelle zu suchen scheint.
Es tut mir leid, wenn das vage ist und mein Setup nicht sehr gut veranschaulicht. Gibt es andere spezifische Informationen, die helfen könnten?