Nginx: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Keine Bearbeitungszusammenfassung
(Link auf Apache im Arch-Wiki eingefügt.)
(12 dazwischenliegende Versionen von 10 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 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.
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 ==
{{installation|repo=community|paket=nginx}}
Nginx befindet sich in den Standardrepositorien und kann mittels folgenden Befehls installiert werden.


  pacman -Sy nginx
Nach der Installation sollte nginx noch über systemd aktiviert werden, damit sichergestellt ist, dass der Webserver bei einem Neustart automatisch mitgestartet wird.
  systemctl enable nginx


Nach der Installation sollte Nginx noch dem Daemon-Eintrag in der rc.conf hinzugefügt werden, damit sichergestellt ist, dass der Webserver bei einem Neustart automatisch mitgestartet wird.
Nach Abschluss der Konfiguration kann man nginx direkt mittels {{ic|systemctl start nginx}} starten.


DAEMONS=(syslog-ng network netfs crond sshd nginx)
== Benutzung und Anpassung ==
== Benutzung und Anpassung ==
Standardmäßig sollte Nginx bereits funktionieren. Dies kann getestet werden, in dem 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 nginx.conf in /etc/nginx/conf den eigenen Wünschen nach angepasst werden. Um beispielsweise einen neuen Hosteintrag vorzunehmen, gilt es innerhalb des http-Abschnittes folgendes hinzuzufügen:
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/user/webseite;
                 root /home/username/webseite;
                 index index.html;
                 index index.html;
         }
         }
Zeile 26: Zeile 25:
  }
  }


Bei dieser Konfiguration ist zu beachten, dass Nginx entweder unter dem User user oder root ausgeführt wird, da sonst keine Zugriffsberechtigungen auf /home/user bestehen. Hierzu gilt es denn folgenden Eintrag abzuändern:
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 nobody;
in
 
  user username users;
  user users user;
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:
  /etc/rc.d/nginx stop
  systemctl start nginx
  /etc/rc.d/nginx restart
  systemctl stop nginx
  /etc/rc.d/nginx start
  systemctl restart nginx
  /etc/rc.d/nginx reload
  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 ==
== 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.
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 [http://aur.archlinux.org/packages.php?ID=35111 gepatchte Version] aus dem AUR installiert werden.
Anschließend ist die Datei {{ic|/etc/nginx/wsgi_vars}} mit folgendem Inhalt anzulegen.
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  REQUEST_METHOD      $request_method;
  #wsgi_var  SCRIPT_NAME        $uri; # TODO
  #wsgi_var  SCRIPT_NAME        $uri; # TODO
  #wsgi_var  PATH_INFO          $uri; # TODO
  #wsgi_var  PATH_INFO          $uri; # TODO
  wsgi_var  QUERY_STRING        $query_string;
  wsgi_var  QUERY_STRING        $query_string;
  wsgi_var  CONTENT_TYPE        $content_type;
  wsgi_var  CONTENT_TYPE        $content_type;
  wsgi_var  CONTENT_LENGTH      $content_length;
  wsgi_var  CONTENT_LENGTH      $content_length;
  wsgi_var  SERVER_NAME        $server_name;
  wsgi_var  SERVER_NAME        $server_name;
  wsgi_var  SERVER_PORT        $server_port;
  wsgi_var  SERVER_PORT        $server_port;
  wsgi_var  SERVER_PROTOCOL    $server_protocol;
  wsgi_var  SERVER_PROTOCOL    $server_protocol;
  #
  #
  # additional variables
  # additional variables
Zeile 68: Zeile 62:
  wsgi_var  DOCUMENT_URI        $document_uri;
  wsgi_var  DOCUMENT_URI        $document_uri;
  wsgi_var  DOCUMENT_ROOT      $document_root;
  wsgi_var  DOCUMENT_ROOT      $document_root;
  wsgi_var  SERVER_SOFTWARE    $nginx_version;
  wsgi_var  SERVER_SOFTWARE    $nginx_version;
  wsgi_var  REMOTE_ADDR        $remote_addr;
  wsgi_var  REMOTE_ADDR        $remote_addr;
  wsgi_var  REMOTE_PORT        $remote_port;
  wsgi_var  REMOTE_PORT        $remote_port;
  wsgi_var  SERVER_ADDR        $server_addr;
  wsgi_var  SERVER_ADDR        $server_addr;
  set $auth_type  '';
  set $auth_type  '';
  if ($remote_user) {
  if ($remote_user) {
     set $auth_type  Basic;
     set $auth_type  Basic;
  }
  }
  #wsgi_var REMOTE_USER $remote_user;
  #wsgi_var REMOTE_USER $remote_user;
  #wsgi_var AUTH_TYPE  $auth_type;
  #wsgi_var AUTH_TYPE  $auth_type;


Nun sollte es ausreichen, einen entsprechenden server-Eintrag in der ''/etc/nginx/conf/nginx.conf'' vorzunehmen.  
Nun sollte es ausreichen, einen entsprechenden server-Eintrag in der {{ic|/etc/nginx/conf/nginx.conf}} vorzunehmen.  


  server {
  server {
     server_name foo.bar.org
     server_name foo.bar.org
     listen 80;
     listen 80;
     access_log off;
     access_log off;
     location /admin_media/ {
     location /admin_media/ {
         alias /var/lib/python-support/python2.6/django/contrib/admin/media/;
         alias /var/lib/python-support/python2.6/django/contrib/admin/media/;
Zeile 103: Zeile 90:
     }
     }
  }
  }
   


== Weblinks ==
== Weblinks ==
* [http://nginx.net/ Offizielle Webseite] {{sprache|en}}
* [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]]
[[Kategorie:Server]]
[[en:Nginx]]

Version vom 1. August 2014, 12:09 Uhr

Offizielles Nginx Logo

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 community verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S nginx

Nach der Installation sollte nginx noch über systemd aktiviert werden, damit sichergestellt ist, dass der Webserver bei einem Neustart automatisch mitgestartet 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;
   }
}

Weblinks