Viele Cloud-Host-integrierte Umgebungen oder verschiedene öffentliche Clouds stellen mittlerweile standardmäßig Lighttpd- oder Nginx-Server bereit. Warum haben diese leistungsstärkeren Serversoftware Apache nicht ersetzt?
Viele Cloud-Host-integrierte Umgebungen oder verschiedene öffentliche Clouds stellen mittlerweile standardmäßig Lighttpd- oder Nginx-Server bereit. Warum haben diese leistungsstärkeren Serversoftware Apache nicht ersetzt?
Nginx ist definitiv leichter und effizienter als Apache, und beide sind sehr stabil.
Netcraft-Statistiken: Im Februar 2016 entfielen auf Apache etwa 46 %, auf Nginx 25 % und auf IIS weniger als 12 % Unter ihnen beträgt der Anteil von Nginx etwa 25 % und weist einen wachsenden Trend auf, während sowohl Apache als auch IIS einen Abwärtstrend aufweisen. Mit anderen Worten, es gibt einen Trend, bei dem Websites mit hoher Parallelität auf Nginx zurückgreifen von inländischem Alibaba ist ein Zweig, der auf der sekundären Entwicklung von Nginx basiert.
Für die meisten virtuellen Hostbenutzer kommt eine hohe Parallelität nicht in Frage, da die Bandbreite der Engpass ist und es keinen Grund gibt, über Parallelität mit 2M Bandbreite zu sprechen, richtig. Und Apache unterstützt die .htaccess-Konfiguration, ohne die Konfiguration zu überlasten Einfach Die Konfiguration der Benutzerfreundlichkeit ist besser als die von Nginx. Das heißt, die Apache-PHP-Architektur ist einfacher als Nginx. Wenn Sie keine Parallelitätsszenarien verfolgen, warum sollten Sie die Architektur ändern, solange sie ausreichend und einfach ist? zu verwenden
Nginx gibt den Fehler 502 Bad Gateway zurück, nicht aufgrund von Nginx-Problemen, sondern aufgrund von Backend-Problemen.Wenn beispielsweise der Backend-PHP-FPM-Prozess bei der Verarbeitung einer Anfrage abstürzt, gibt Nginx den Fehler 502 zurück.
Von Natürlich können Sie die fastcgi_next_upstream-Konfiguration verwenden, um Nginx die Anforderung zur Verarbeitung an einen anderen Upstream übertragen zu lassen. fastcgi_next_upstream error timeout invalid_header http_500 http_502 http_504;
Nginx PHP-FPM implementiert dynamische und statische Trennung, Lastausgleich und Failover und ist in der Tat besser als Apache Parallelitätsszenarien Es gibt Vorteile.
Der Apache-Prozess mit integriertem PHP-Modul kann bei der Verarbeitung von PHP keine statischen Ressourcen verarbeiten, aber Nginx muss sich nicht um dieses Problem kümmern, da die Verarbeitung von PHP eine Frage von PHP-FPM ist Die Trennung von dynamisch und statisch. Und Nginx unterstützt die Upstream-Konfiguration eines PHP-FPM-Clusters, um einen Lastausgleich zu erreichen.
Benutzer-Downloads und Curl-Anfragen sind typische E/A-intensive Vorgänge, weil sie es sind Tritt hauptsächlich bei Netzwerk-E/A und Festplatten-E/A auf.
Download-Vorgänge, die eine PHP-Authentifizierung erfordern, können an den AIO-Thread-Pool von Nginx delegiert werden:header("X-Accel-Redirect: $filepath");
Was den Curl-Vorgang betrifft, z Sie können beispielsweise einen Überwachungsport 9001 einrichten. Der PHP-FPM-Prozesspool (Pool) mit dem Namen io ist speziell für die Verarbeitung von Curl-Vorgängen (verteilt über Nginx) verantwortlich, um zu verhindern, dass Curl-Vorgänge durch den WWW-Prozesspool blockiert werden, der Port 9000 überwacht.
Derzeit gibt es viele io-Prozesspools. Es spielt keine Rolle, ob Sie einige Prozesse öffnen:
<code>nginx.conf: 访问io.php的请求都交给监听9001的PHP-FPM进程池处理 location = /io.php { include fastcgi_params; fastcgi_pass 127.0.0.1:9001; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } php-fpm: 正常脚本由静态www池处理,阻塞脚本由动态io池处理 [www] ;名为www的进程池监听9000端口,常驻进程数量为固定4个 listen = 127.0.0.1:9000 pm = static pm.max_children = 4 [io] ;名为io的进程池监听9001端口,进程数常驻4个,最大8个 listen = 127.0.0.1:9001 pm = dynamic pm.max_children = 8 pm.start_servers = 4 pm.min_spare_servers = 4 pm.max_spare_servers = 4</code>
Für einige Websites, die keine sehr hohen Leistungsanforderungen wie Parallelität haben, ist Apache eine gute Wahl.
Apache konzentriert sich auf Vollständigkeit und Stabilität, während Nginx auf Leichtigkeit und hohe Effizienz setzt. In vielen Fällen werden Apache und Nginx zusammen vor Apache konfiguriert und zum Blockieren von Anforderungen für statische Dateien (die Ressource der Website) verwendet Da die meisten Anfragen heute ausmachen, wird der Inhalt, den Nginx nicht verarbeiten kann, zur Verarbeitung an Apache weitergeleitet.
Der Topf von LAMP kann verwendet werden, sobald er installiert ist und der Schulungslehrer ihn gelehrt hat. Wenn viele Menschen auf Probleme stoßen, verbringen sie lieber zehnmal mehr Arbeitszeit damit, sich an etwas zu gewöhnen, das sie beherrschen . Ich möchte keinen Tag damit verbringen, etwas Neues zu lernen, wenn ich 100 Mal mehr Zeit damit verbringe, diese große Lücke zu füllen.
Alles hat Vor- und Nachteile, daher wird es schwierig sein, es in Kombination zu verwenden. Viele Menschen waren in der Vergangenheit zu faul, um neue Dinge zu schaffen sind am Anfang resistent gegen Neues, als ob man es nicht hätte. Als ich in die Kaiserhauptstadt kam, fiel mir ein, dass die U-Bahn extrem voll und schnell war. Wenn man tatsächlich kommt, wird man feststellen, dass es so ist nicht so gruselig
Hauptsächlich, weil Nginx nach der Änderung der Konfigurationsdatei neu gestartet werden muss, damit sie wirksam wird. Im Gegensatz zu Apache, das die .htaccess-Datei direkt analysieren kann, kann der Host Nginx nicht neu starten, nur weil der Benutzer seine eigene Konfigurationsdatei geändert hat andere Benutzer.