Einfache Nginx-Konfiguration funktioniert nicht

1035

Ich bin ein Entwickler ohne Servererfahrung. Dieses Projekt, an dem ich arbeite, ist mein erster Streifzug in die Welt der Server. Grundsätzlich muss ich eine API online hosten, auf einem Linode-Server, auf dem Nginx unter Ubuntu ausgeführt wird. Ich habe Probleme, einen einfachen Serverblock einrichten zu können, der eine HTML-Indexseite hostet, wobei nur ein h1-Tag "Hallo" sagt. Ich habe verschiedene Tutorials über das Funktionieren eines einfachen Serverblocks verfolgt und gelesen. Ich habe sogar diese Blöcke auf meinem lokalen Rechner funktionieren lassen, aber ich habe Probleme damit, dass er auf dem Remote-Server funktioniert.

Ich zeige Ihnen einige Blöcke, die auf der Linode nicht funktioniert haben:

Zunächst ein einfacher Block zum Server einer statischen HTML-Seite. Dies funktioniert auf meinem lokalen Computer:

server {  listen 8005; index index.html; root /srv/www/site;  } 

Ein weiterer einfacher Block:

server {  listen [server ip]:8006; server_name ""; index index.html; root /srv/www/site;  location ~/ {  root /srv/www/site;  }  } 

Ein Block zum Servieren von PHP (funktioniert lokal):

server {  listen [server ip]:8007; server_name ""; index index.php index.html index.htm; root /srv/www/site;  location / {  try_files $uri $uri/ /index.php?q=$uri&$args;  }  location ~* \.php$ {  try_files $uri /index.php; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name;  }  } 

Immer wenn ich versuchte, über den Browser auf sie zuzugreifen, erhielt ich Timeouts für die Serververbindung. Ich habe kein DNS-Setup damit, also habe ich versucht, mit der Server-IP und der Portnummer darauf zuzugreifen:

[server ip]:[port] 

oder

[server ip]:[port]/index.html 

aber nichts bekommen.

Eine Sache, die das Problem verursachen könnte, ist die Tatsache, dass bereits eine andere Anwendung auf dem Server gehostet wird. Es hat einen eigenen Block und läuft auf einem eigenen Port. Es hat einen eigenen DNS-Namen, der darauf verweist. Aber nichts davon sollte richtig sein? Da jeder Serverblock grundsätzlich ein virtueller Server ist oder eine virtuelle Domäne erstellt. Der Zugriff über IP und Port sollte funktionieren, aber es funktioniert nicht!

Das ist alles, woran ich denken kann, mein Wissen in diesem Bereich ist voll ausgeschöpft und ich brauche Hilfe von intelligenten Leuten!

4
Was ist die Ausgabe von `iptables -nvL`? Xavier Lucas vor 8 Jahren 2
Höchstwahrscheinlich Firewall-Regeln. vor 8 Jahren 0
Bisher habe ich ein paar Dinge herausgefunden, ich habe die Ports durch die Firewall gelassen und überprüft, ob Nginx diese Ports abhört. immer noch nichts. Die Live-Anwendung, die bereits auf dem Server ausgeführt wird, überwacht Port 80. Wenn Sie meinen einfachen Serverblock auf Port 80 abhören, funktioniert er. daher ist zumindest meine Blocksyntax korrekt. Was bekomme ich, wenn 'lsof -i: 80' ausgeführt wird: http://i.imgur.com/f6WbR7y.png, bedeutet *: http, dass der gesamte http-Verkehr an Port 80 geleitet wird? vor 8 Jahren 0
@jonathan Sie sollten Ihre Frage * mit den neuen Informationen bearbeiten. Was die Ergebnisse des "lsof" angeht, so bedeutet dies, dass die Software, die Port 80 abhört, an jeder Schnittstelle der Maschine hört. Wenn Sie etwas wie "127.0.0.1: 80" gefunden haben, würde dies bedeuten, dass die Software nur Verbindungen akzeptiert, die auf dem Loopback-Gerät an Port 80 hergestellt werden. Eine von einer Ethernet-Karte kommende Verbindung wird daher abgelehnt. Louis vor 8 Jahren 0

1 Antwort auf die Frage

0
snoopy

Versuchen Sie, über 127.0.0.1:8005 von demselben Server aus zuzugreifen. Wenn dies funktioniert, sind es Ihre IP-Tabellen. Versuchen Sie in diesem Fall etwas auszuführen: iptables -A INPUT -i eth0 -p tcp --dport 8005 -j ACCEPTÖffnen Sie den Port.