Heim  >  Artikel  >  php教程  >  Denken Sie daran, den 502 Bad Gateway-Fehler zu beheben, wenn Nginx das yii2-Projekt bereitstellt

Denken Sie daran, den 502 Bad Gateway-Fehler zu beheben, wenn Nginx das yii2-Projekt bereitstellt

WBOY
WBOYOriginal
2016-12-05 13:26:271977Durchsuche

Ich hatte am Samstag nichts zu tun, also habe ich versucht, yii2 zu installieren und bereitzustellen. Während des Installationsvorgangs gab es kein Problem, aber als ich es auf Nginx bereitstellte, stieß ich auf ein 502-schlechtes Gateway-Problem Zeit, es zu reparieren. Dieses Problem ist mir bei der Bereitstellung von yii2 noch nie begegnet, daher notiere ich es hier als Referenz.

1. Installations- und Bereitstellungsumgebung

Betriebssystem: macOS, PHP-Version: 5.6, Nginx-Version: 1.10.1, YII2-Version: 2.0.

2, Installation von yii2

Die Installation von yii2 ist sehr einfach. Sehen Sie sich einfach das Handbuch auf der offiziellen Website an. Was ich hier installiert habe, ist yii2-app-advanced (Yii 2 Advanced Project Template). Befolgen Sie einfach die Installationsanweisungen in der README-Datei. Ich werde nicht näher darauf eingehen.

3. Bereitstellung von yii2 auf Nginx

Tatsächlich hat die README-Datei des yii2-app-advanced-Projekts sehr deutlich gemacht, wie man es auf Nginx bereitstellt. Wenn Sie die Schritte befolgen, sollte es keine Probleme geben. Aber ich war während der Bereitstellung faul und habe direkt die Nginx-Bereitstellungsparameter in der README-Datei verwendet, was zu einem 502 Bad Gateway-Fehler führte.

Die Antwortcodes, die im HTTP-Statuscode mit 5 beginnen, werden alle von der Serverseite verursacht, schauen Sie sich also das Nginx-Protokoll an:

Fehlerprotokoll:

Als ich Upstream sah: „fastcgi: //127.0.0.1:9090“, schien der Port falsch zu sein, also überprüfte ich die Konfiguration des virtuellen Hosts:

Werfen wir einen Blick auf die Konfiguration von php-fpm:

Natürlich ist der vom virtuellen Nginx-Host angegebene FastCGI-Server-Überwachungsport falsch, was dazu führt, dass Nginx keine Antwort vom FastCGI-Server erhält. Wenn der Browser eine Anfrage stellt, gibt Nginx daher einen 502-Statuscode an den Browser zurück und teilt dem Browser mit, dass der Upstream-FastCGI-Server nicht geantwortet hat.

4, Lösung

Ändern Sie im virtuellen Nginx-Host den durch fastcgi_pass angegebenen Port korrekt, und dieser Fehler wird behoben.

5, Zusammenfassung

(1) Fehler, die mit dem HTTP-Statuscode 5 beginnen, werden durch den Server (Webserver) verursacht, der als Gateway oder Proxy fungiert. Er wird vom Upstream empfangen Server (Fastcgi-Server) auf eine ungültige Antwort.

(2) fastcgi_pass ist eine Konfigurationsanweisung des Moduls ngx_http_fastcgi_module. Sie gibt die Adresse des Fastcgi-Servers an. Die Beschreibung im Nginx-Dokument lautet wie folgt:

<span style="color: #008080;"> 1</span> <span style="color: #000000;">Syntax:    fastcgi_pass address;
</span><span style="color: #008080;"> 2</span> <span style="color: #0000ff;">Default</span><span style="color: #000000;">:    —
</span><span style="color: #008080;"> 3</span> Context:    location, <span style="color: #0000ff;">if</span> <span style="color: #0000ff;">in</span><span style="color: #000000;"> location
</span><span style="color: #008080;"> 4</span> 
<span style="color: #008080;"> 5</span> <span style="color: #000000;">Sets the address of a FastCGI server. The address can be specified as a domain name or IP address, and a port:
</span><span style="color: #008080;"> 6</span> fastcgi_pass localhost:9000<span style="color: #000000;">;
</span><span style="color: #008080;"> 7</span> 
<span style="color: #008080;"> 8</span> or as a UNIX-<span style="color: #000000;">domain socket path:
</span><span style="color: #008080;"> 9</span> fastcgi_pass unix:/tmp/<span style="color: #000000;">fastcgi.socket;
</span><span style="color: #008080;">10</span> 
<span style="color: #008080;">11</span> <span style="color: #0000ff;">If</span> a domain name resolves to several addresses, all of them will be used <span style="color: #0000ff;">in</span> a round-robin fashion. <span style="color: #0000ff;">In</span> addition, an address can be specified as a server group.

Referenz:

HTTP-Statuscode

fastcgi_pass

Syntax: <strong>fastcgi_pass</strong> <code><em>address</em>;
Default:
Context: locationif in location
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn