Nginx: Unterschied zwischen den Versionen
Boenki (Diskussion | Beiträge) K Wertung raus |
Dirk (Diskussion | Beiträge) K Verschiebung community -> extra |
||
(16 dazwischenliegende Versionen von 11 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{SEITENTITEL:nginx}} | |||
[[Bild:Nginx.gif|thumb|Offizielles Nginx Logo]] | [[Bild:Nginx.gif|thumb|Offizielles Nginx Logo]] | ||
Der ursprüngliche Entwickler Igor Sysoev beschreibt | Der ursprüngliche Entwickler Igor Sysoev beschreibt nginx (englisch ausgesprochen ''Engine X'') als äußerst leistungsfähigen, aber dennoch schlanken Webserver, Reverse Proxy und E-Mail-Proxy. Er stellt damit eine ausgezeichnete Alternative oder Ergänzung zu [[Apache|Apache2]] oder [[lighttpd]] dar. | ||
== | {{installation|repo=extra|paket=nginx}} | ||
Nach der Installation sollte nginx noch über systemd aktiviert werden, damit sichergestellt ist, dass der Webserver bei einem Neustart automatisch mit gestartet wird. | |||
systemctl enable nginx | |||
Nach der | Nach Abschluss der Konfiguration kann man nginx direkt mittels {{ic|systemctl start nginx}} starten. | ||
== Benutzung und Anpassung == | == Benutzung und Anpassung == | ||
Standardmäßig sollte | Standardmäßig sollte nginx bereits funktionieren. Dies kann getestet werden, indem die IP oder der Reverse DNS des Servers im Browser eingegeben wird. Sollten dennoch Änderungen in der Konfiguration erwünscht sein, so kann hierzu die Datei {{ic|/etc/nginx/nginx.conf}} den eigenen Wünschen nach angepasst werden. Um beispielsweise einen neuen Hosteintrag vorzunehmen, gilt es innerhalb des http-Abschnittes folgendes hinzuzufügen: | ||
http { | http { | ||
Zeile 20: | Zeile 19: | ||
location / { | location / { | ||
root /home/ | root /home/username/webseite; | ||
index index.html; | index index.html; | ||
} | } | ||
Zeile 26: | Zeile 25: | ||
} | } | ||
Bei dieser Konfiguration ist zu beachten, dass | Bei dieser Konfiguration ist zu beachten, dass nginx entweder unter dem Benutzer username oder root ausgeführt wird, da sonst keine Zugriffsberechtigungen auf /home/username bestehen. Hierzu gilt es die Zeile | ||
#user http; | |||
#user | in | ||
user username users; | |||
user users | zu verändern. | ||
Weitere Konfigurationsmöglichkeiten sind bitte dem [http://wiki.nginx.org/Main offiziellen Wiki] zu entnehmen. | Weitere Konfigurationsmöglichkeiten sind bitte dem [http://wiki.nginx.org/Main offiziellen Wiki] zu entnehmen. | ||
Zeile 36: | Zeile 35: | ||
=== Die wichtigsten Befehle === | === Die wichtigsten Befehle === | ||
Zweifelsohne die wichtigsten Befehle sind Stop, Neustart, Start und Reload. Diese lassen sich wie folgt bedienen: | Zweifelsohne die wichtigsten Befehle sind Stop, Neustart, Start und Reload. Diese lassen sich wie folgt bedienen: | ||
systemctl start nginx | |||
systemctl stop nginx | |||
systemctl restart nginx | |||
systemctl reload nginx | |||
Diese sind beispielsweise dann nützlich, wenn die Konfigurationsdatei verändert wurde, aber noch nicht geladen wurde. Hierfür reicht ein reload bereits aus. | Diese sind beispielsweise dann nützlich, wenn die Konfigurationsdatei verändert wurde, aber noch nicht geladen wurde. Hierfür reicht ein reload bereits aus. | ||
== Nginx und mod_wsgi == | |||
Mit einem Patch ist es möglich, in Python geschriebene Webanwendungen (beispielsweise in Django oder Bottle) per Python Web Server Gateway Interface, kurz WSGI, über nginx auszuliefern. Hierzu kann die bereits {{AUR|nginx-mod_wsgi|gepatchte Version}} aus dem [[AUR]] installiert werden. | |||
Anschließend ist die Datei {{ic|/etc/nginx/wsgi_vars}} mit folgendem Inhalt anzulegen. | |||
# /etc/nginx/wsgi_vars | |||
wsgi_var REQUEST_METHOD $request_method; | |||
#wsgi_var SCRIPT_NAME $uri; # TODO | |||
#wsgi_var PATH_INFO $uri; # TODO | |||
wsgi_var QUERY_STRING $query_string; | |||
wsgi_var CONTENT_TYPE $content_type; | |||
wsgi_var CONTENT_LENGTH $content_length; | |||
wsgi_var SERVER_NAME $server_name; | |||
wsgi_var SERVER_PORT $server_port; | |||
wsgi_var SERVER_PROTOCOL $server_protocol; | |||
# | |||
# additional variables | |||
# (they will be present in the WSGI environment only if not empty) | |||
# | |||
wsgi_var REQUEST_URI $request_uri; | |||
wsgi_var DOCUMENT_URI $document_uri; | |||
wsgi_var DOCUMENT_ROOT $document_root; | |||
wsgi_var SERVER_SOFTWARE $nginx_version; | |||
wsgi_var REMOTE_ADDR $remote_addr; | |||
wsgi_var REMOTE_PORT $remote_port; | |||
wsgi_var SERVER_ADDR $server_addr; | |||
set $auth_type ''; | |||
if ($remote_user) { | |||
set $auth_type Basic; | |||
} | |||
#wsgi_var REMOTE_USER $remote_user; | |||
#wsgi_var AUTH_TYPE $auth_type; | |||
Nun sollte es ausreichen, einen entsprechenden Server-Eintrag in der {{ic|/etc/nginx/conf/nginx.conf}} vorzunehmen. | |||
server { | |||
server_name foo.bar.org | |||
listen 80; | |||
access_log off; | |||
location /admin_media/ { | |||
alias /var/lib/python-support/python2.6/django/contrib/admin/media/; | |||
} | |||
location /media/ { | |||
alias /home/foo/bar/media/; | |||
} | |||
location / { | |||
include /etc/nginx/wsgi_vars; | |||
wsgi_pass /home/foo/bar.wsgi; | |||
} | |||
} | |||
== Weblinks == | == Weblinks == | ||
* [http://nginx. | * [http://nginx.org/ Offizielle Webseite] {{sprache|en}} | ||
* [http://wiki.nginx.org/Main Offizielles Wiki] {{sprache|en}} | * [http://wiki.nginx.org/Main Offizielles Wiki] {{sprache|en}} | ||
[[Kategorie:HTTP-Server]] | |||
[[ | [[en:Nginx]] |
Aktuelle Version vom 24. Mai 2023, 18:17 Uhr
Der ursprüngliche Entwickler Igor Sysoev beschreibt nginx (englisch ausgesprochen Engine X) als äußerst leistungsfähigen, aber dennoch schlanken Webserver, Reverse Proxy und E-Mail-Proxy. Er stellt damit eine ausgezeichnete Alternative oder Ergänzung zu Apache2 oder lighttpd dar.
Installation
Das Programm ist als
nginx
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Nach der Installation sollte nginx noch über systemd aktiviert werden, damit sichergestellt ist, dass der Webserver bei einem Neustart automatisch mit gestartet wird.
systemctl enable nginx
Nach Abschluss der Konfiguration kann man nginx direkt mittels systemctl start nginx
starten.
Benutzung und Anpassung
Standardmäßig sollte nginx bereits funktionieren. Dies kann getestet werden, indem die IP oder der Reverse DNS des Servers im Browser eingegeben wird. Sollten dennoch Änderungen in der Konfiguration erwünscht sein, so kann hierzu die Datei /etc/nginx/nginx.conf
den eigenen Wünschen nach angepasst werden. Um beispielsweise einen neuen Hosteintrag vorzunehmen, gilt es innerhalb des http-Abschnittes folgendes hinzuzufügen:
http { server { listen 80; server_name domain.tld; location / { root /home/username/webseite; index index.html; } } }
Bei dieser Konfiguration ist zu beachten, dass nginx entweder unter dem Benutzer username oder root ausgeführt wird, da sonst keine Zugriffsberechtigungen auf /home/username bestehen. Hierzu gilt es die Zeile
#user http;
in
user username users;
zu verändern.
Weitere Konfigurationsmöglichkeiten sind bitte dem offiziellen Wiki zu entnehmen.
Die wichtigsten Befehle
Zweifelsohne die wichtigsten Befehle sind Stop, Neustart, Start und Reload. Diese lassen sich wie folgt bedienen:
systemctl start nginx systemctl stop nginx systemctl restart nginx systemctl reload nginx
Diese sind beispielsweise dann nützlich, wenn die Konfigurationsdatei verändert wurde, aber noch nicht geladen wurde. Hierfür reicht ein reload bereits aus.
Nginx und mod_wsgi
Mit einem Patch ist es möglich, in Python geschriebene Webanwendungen (beispielsweise in Django oder Bottle) per Python Web Server Gateway Interface, kurz WSGI, über nginx auszuliefern. Hierzu kann die bereits gepatchte VersionAUR aus dem AUR installiert werden.
Anschließend ist die Datei /etc/nginx/wsgi_vars
mit folgendem Inhalt anzulegen.
# /etc/nginx/wsgi_vars wsgi_var REQUEST_METHOD $request_method; #wsgi_var SCRIPT_NAME $uri; # TODO #wsgi_var PATH_INFO $uri; # TODO wsgi_var QUERY_STRING $query_string; wsgi_var CONTENT_TYPE $content_type; wsgi_var CONTENT_LENGTH $content_length; wsgi_var SERVER_NAME $server_name; wsgi_var SERVER_PORT $server_port; wsgi_var SERVER_PROTOCOL $server_protocol; # # additional variables # (they will be present in the WSGI environment only if not empty) # wsgi_var REQUEST_URI $request_uri; wsgi_var DOCUMENT_URI $document_uri; wsgi_var DOCUMENT_ROOT $document_root; wsgi_var SERVER_SOFTWARE $nginx_version; wsgi_var REMOTE_ADDR $remote_addr; wsgi_var REMOTE_PORT $remote_port; wsgi_var SERVER_ADDR $server_addr; set $auth_type ; if ($remote_user) { set $auth_type Basic; } #wsgi_var REMOTE_USER $remote_user; #wsgi_var AUTH_TYPE $auth_type;
Nun sollte es ausreichen, einen entsprechenden Server-Eintrag in der /etc/nginx/conf/nginx.conf
vorzunehmen.
server { server_name foo.bar.org listen 80; access_log off; location /admin_media/ { alias /var/lib/python-support/python2.6/django/contrib/admin/media/; } location /media/ { alias /home/foo/bar/media/; } location / { include /etc/nginx/wsgi_vars; wsgi_pass /home/foo/bar.wsgi; } }