Nginx nebo „engine-x " je vysoce výkonný webový server s nízkým využitím paměti, který vytvořil Igor Sysoev v roce 2002. Nginx není jen webový server, lze jej použít jako reverzní proxy pro mnoho protokolů, jako je HTTP, HTTPS, POP3, SMTP a IMAP a také jako nástroj pro vyrovnávání zatížení a mezipaměť HTTP.
Apache je nejoblíbenější software webového serveru spravovaný komunitou open source pod Apache Software Foundation. Pro apache je k dispozici mnoho přídavných modulů, jako je podpora WebDav nebo firewally webových aplikací, jako je mod_security, a podporuje mnoho webových programovacích jazyků jako Perl, Python, PHP prostřednictvím nativních modulů nebo pomocí rozhraní cgi, fcgi a FPM.
V tomto tutoriálu nainstaluji a nakonfiguruji Nginx jako caching reverzní proxy pro webový server Apache na Ubuntu 15.10, Nginx se používá jako frontend a Apache jako back end. Nginx poběží na portu 80, aby odpovídal na požadavky od uživatele/prohlížeče, požadavek pak bude předán na server Apache, který běží na portu 8080.
Krok 1 – Instalace Apache a PHP
Přihlaste se na svůj ubuntu server pomocí SSH a staňte se uživatelem root spuštěním:
sudo su
Poté nainstalujte apache pomocí příkazu apt-get:
apt-get install apache2
Jakmile je apache nainstalován, musíme nainstalovat PHP jako modul apache pro tento tutoriál:
apt-get install php5 php5-mysql libapache2-mod-php5
Krok 2 – Konfigurace Apache a PHP
Ve výchozím nastavení Apache naslouchá na portu 80. Musíme nakonfigurovat Apache tak, aby běžel na portu 8080 pro naše nastavení proxy, protože port 80 bude později používat nginx.
Pokud chcete změnit port pro webový server Apache, musíte upravit konfigurační soubor Apache „/etc/apache2/ports.conf“ a poté pokračovat s konfigurací virtuálního hostitele v „/etc/apache2/sites-available/ " adresář.
Nejprve změňte port pro apache na 8080 úpravou souboru "ports.conf" pomocí editoru vim:
vim /etc/apache2/ports.conf
Na řádku 5 , změňte port 80 na 8080.
Listen 8080
Uložte a ukončete.
Nyní přejděte do adresáře virtualhost a upravte soubor "000-default.conf" :
cd sites-available/
vim 000-default.conf
Ujistěte se, že vaše konfigurace je stejná jako níže:
<VirtualHost *:8080> ServerName www.reverse.com ServerAlias reverse.com ServerAdmin [email protected] DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Uložte a ukončete.
Dále otestujte konfiguraci a restartujte apache:
apachectl configtest
systemctl restart apache2
Nakonec ověříme, že apache a php fungují. Vytvořte nový soubor s názvem „info.php“ v adresáři „/var/www/html/“.
cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php
Navštivte svůj web www.reverse.com:8080/info.php .
Výsledek by měl být podobný výše uvedenému snímku obrazovky.
Krok 3 – Instalace Nginx
Nainstalujte Nginx pomocí následujícího příkazu apt-get:
apt-get install nginx
Krok 4 – Konfigurace Nginx
Jakmile je Nginx nainstalován, nakonfigurujte Nginx tak, aby fungoval jako reverzní proxy pro webový server Apache, který běží na portu 8080.
Přejděte do konfiguračního adresáře nginx a upravte soubor "nginx.conf":
cd /etc/nginx/
vim nginx.conf
Povolte kompresi Gzip pro Nginx zrušením komentáře řádků gzip:
# Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
nejdůležitější je:
zapněte gzip :pro zapnutí komprese gzip.
gzip_types :je seznam typů MIME, u kterých chcete změnit kompresi.
gzip_proxed any :je povolení komprese pro požadavek přes proxy.
Přímo pod nastavením gzip přidejte tato nastavení mezipaměti proxy:
# Proxy Cache Settings proxy_cache_path /var/cache levels=1:2 keys_zone=reverse_cache:60m inactive=90m max_size=1000m;
Adresář mezipaměti proxy je /var/cache.
úrovně je direktiva, která říká Nginxu, jak je mezipaměť uložena v systému souborů.
key_zone je pouze název zóny mezipaměti, můžete si ji vybrat libovolně, ale do názvu nepřidávejte speciální znaky nebo mezery. Budu používat název „reverse_cache "zde.
."
Uložit a ukončit.
Nyní nakonfigurujeme virtuálního hostitele v adresáři "/etc/nginx/sites-available".
V tomto tutoriálu vytvořím nový konfigurační soubor virtuálního hostitele s názvem „reverse.conf“. Právě jste se dostali do adresáře a vytvořili nový soubor pomocí vim:
cd /etc/nginx/sites-available
vim reverse.conf
Vložte konfiguraci níže:
server { listen 80; # Site Directory same in the apache virtualhost configuration root /var/www/html; index index.php index.html index.htm; # Domain server_name www.reverse.com reverse.com; location / { try_files $uri $uri/ /index.php; } # Reverse Proxy and Proxy Cache Configuration location ~ \.php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8080; # Cache configuration proxy_cache reverse_cache; proxy_cache_valid 3s; proxy_no_cache $cookie_PHPSESSID; proxy_cache_bypass $cookie_PHPSESSID; proxy_cache_key "$scheme$host$request_uri"; add_header X-Cache $upstream_cache_status; } # Enable Cache the file 30 days location ~* .(jpg|png|gif|jpeg|css|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ { proxy_cache_valid 200 120m; expires 30d; proxy_cache reverse_cache; access_log off; } # Disable Cache for the file type html, json location ~* .(?:manifest|appcache|html?|xml|json)$ { expires -1; } location ~ /\.ht { deny all; } }
Uložte a ukončete.
Poté aktivujte novou konfiguraci virtuálního hostitele:
ln -s /etc/nginx/sites-available/reverse.conf /etc/nginx/sites-enabled/
Nakonec otestujeme konfiguraci nginx a restartujeme nginx:
nginx -t
systemctl restart nginx
Nginx je nyní nakonfigurován jako reverzní proxy. Můžete to otestovat pomocí curl:
curl -I www.reverse.com
Cache-Control:no-cache znamená index.html a všechny soubory s příponou .html se neuloží do mezipaměti.
Další test:
curl -I www.reverse.com/info.php
X-Cache:HIT znamená, že stránka je obsluhována mezipamětí Nginx.
Krok 5 – Konfigurace protokolování
V tomto kroku nakonfiguruji apache tak, aby zaznamenával skutečnou IP adresu návštěvníka namísto místní IP.
Nainstalujte prosím modul apache „libapache2-mod-rpaf“ a upravte konfigurační soubor modulu:
sudo apt-get install libapache2-mod-rpaf
cd /etc/apache2/mods-available/
vim rpaf.conf
Přidejte IP serveru na řádek 10 . Můj server má IP:192.168.1.108.
RPAFproxy_ips 127.0.0.1 192.168.1.108 ::1
Uložte a ukončete.
Nyní restartujte apache:
systemctl restart apache2
Otestujte rpaf zobrazením protokolu přístupu Apache pomocí příkazu tail:
tail -f /var/log/apache2/access.log
To je vše.
Nginx je nainstalován jako reverzní proxy před webový server Apache. Pokud si návštěvník vyžádá soubor php, požadavek bude předán Apache na portu 8080 a skutečného ip návštěvníka můžete vidět v souboru protokolu Apache.
Závěr
Nginx je rychlý a oblíbený webový server s nízkou spotřebou paměti, který může fungovat jako webový server a reverzní proxy pro protokoly HTTP a HTTPS. Reverzní proxy Nginx pro Apache je nastavení, které používá Nginx jako frontend a Apache jako backend. Nginx zpracovává příchozí požadavek z prohlížeče a předává jej backendu Apache. V tomto tutoriálu jsme nastavili konfiguraci pro nginx jako http cache, která ukládá požadavky na soubory PHP a obrázky do mezipaměti.