1. #1
    Avatar von Ta1lor
    Registriert seit
    15.11.2011
    Beiträge
    767
    Thanked 832 Times in 435 Posts

    Standard [HowTo] Nginx as reverse Proxy

    Moin,

    da ich gerade etwas Zeit habe zeige ich euch mal wie man Nginx als reverse Proxy zu apache einrichtet. Das hat den Vorteil, dass euer VPS mehr requests schafft, da nginx besser die statischen Inhalte verarbeiten kann und apache2 besser für dynamische Sachen geeignet ist.

    Welche Kenntnisse benötigt ihr?

    - Ihr müsst Dateien bearbeiten können
    - Etwas Linux Kenntnisse sind natürlich vorrausgesetzt, damit ihr auch wisst was ihr macht.

    Ich zeige das ganze unter Debian 6.0.4
    [code][root@washyourmom ~]# cat /etc/debian_version
    6.0.4[code]

    Apache2

    Code:
    aptitude install apache2
    Da die Repos von Debian6 mpm-worker installieren, wir aber mod-php5 haben wollen, installieren wir danach noch
    Code:
    aptitude install libapache2-mod-php5
    Nun werden wir gefragt ob apache2-mpm-worker ersetzt werden soll und das bestätigen wir.
    Damit ist apache2 erst mal installiert.
    Damit kommen wir zur apache2 Konfiguration, ich zeige euch wie ich das ganze immer Aufbau um die Übersicht zu behalten.
    Code:
    mkdir /var/www/Domain
    touch /var/www/Domain/index.php
    mkdir /var/log/apache2/Domain/
    touch /var/log/apache2/Domain/error.log
    touch /var/log/apache2/Domain/access.log
    chown -R www-data:www-data /var/www/Domain/
    Domain ist natürlich durch eure Domain zu ersetzen.
    Code:
    /etc/apache2/ports.conf
    Damit der Websrver auch auf dem richtigen Port lauscht, erzählen wir ihm das auch gleich mal, hier könnt ihr irgend einen Port über 1024 einsetzen. In meinem Beispiel nutze ich dafür Port 8080.
    Also steht dann da:
    Code:
    NameVirtualHost 127.0.0.1:8080
    Listen 127.0.0.1:8080
    Warum 127.0.0.1? Damit wirklich nur Nginx später auf apache zugreift.
    Danach löschen wir erstmal den Default Virtualhost von apache
    Code:
    a2dissite default
    und legen eine neue Datei unter /etc/apache2/sites-available an.
    Code:
    <VirtualHost 127.0.0.1:8080>
    ServerAdmin root
    ServerName Domain
    ServerAlias www.Domain
    DocumentRoot /var/www/Domain
    <Directory />
    AllowOverride None
    </Directory>
    <Directory /var/www/Domain>
    Options FollowSymLinks MultiViews
    </Directory>
    ErrorLog /var/log/apache2/Domain/error.log
    LogLevel warn
    CustomLog /var/log/apache2/Domain/access.log combined
    </VirtualHost>
    Den Virtualhost werde ich jetzt nicht im Detail erklären, dazu kann man sich gerne die Dokumentation durchlesen.
    Dann noch
    Code:
    a2ensite Domain && apache2ctl restart
    und wir sind mit der Konfiguration für den backend fertig.

    Nginx

    Code:
    aptitude install nginx
    Bei nginx machen wir eigentlich fast das gleiche. Zu erst einen neuen Virtualhost anlegen, diesen aktivieren und nginx auf Port 80 lauschen lassen. Im Virtualhost wird auch der reverse Proxy eingestellt.
    Also erstellen wir mal einen neuen Vhost in
    Code:
    /etc/nginx/sites-available/Domain
    Code:
    server {
    
    listen 80;
    server_name Domain;
    
    location / {
    proxy_pass http://127.0.0.1:8080/;
    proxy_redirect default;
    }
    location ~* ^.+.(htm|html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz| rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|b mp|rtf|js)$ {
    access_log off;
    expires max;
    root /var/www/Domain;
    }
    }
    Es ist eindeutig zu sehen was hier passiert. Alles was nicht gekennzeichnet ist wird erstmal zu apache2 weitergeleitet.
    Zum aktivieren einfach:
    Code:
    ln -s /etc/nginx/sites-available/Domain /etc/nginx/sites-enabled/Domain
    Jetzt noch nginx mit
    Code:
    /etc/init.d/nginx restart
    neustarten und wir sind fertig.

    Ist nicht sonderlich toll erklärt, aber wie oben gesagt, mit etwas Erfahrung im Bereich Linux wird sich das ganze von selbst erklären.
    Falls Fragen sind oder ich was vergessen habe, schreibt es einfach, ich kann euch gerne helfen.


    //EDIT:
    Nach ein "paar" Monaten ist mir jetzt mal aufgefallen das ich eine wichtige Sache vergessen habe.
    Ihr braucht noch unter /etc/nginx/conf.d/ eine .conf Datei (Ich nenne diese proxy.conf) mit folgendem Inhalt:
    Code:
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 10m;
    client_body_buffer_size 128k;
    client_header_buffer_size 64k;
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_buffer_size 16k;
    proxy_buffers 32 16k;
    Geändert von Darkfield (03.02.2014 um 11:34 Uhr)

  2. The Following 8 Users Say Thank You to Ta1lor For This Useful Post:

    .Empty (02.11.2018), Comu (04.02.2012), DotNet (20.12.2015), Linux (02.11.2018), Mentos (04.02.2012), Nachto (09.02.2012), Prinzessin Paat (09.01.2013), Sky.NET (04.02.2012)

Ähnliche Themen

  1. Reverse Engineering - Crackme v5
    Von Snees im Forum Aufgaben
    Antworten: 6
    Letzter Beitrag: 19.07.2013, 15:34
  2. Reverse Engineering - Crackm3
    Von Snees im Forum Aufgaben
    Antworten: 9
    Letzter Beitrag: 06.05.2013, 18:49
  3. [Artikel] Server Load Balancing (SLB) mit nginx
    Von Devon im Forum Server-Administration
    Antworten: 0
    Letzter Beitrag: 15.08.2012, 23:03
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.