Własny Serwer

Własny serwer Debian/Ubuntu – cz.23: Nginx reverse proxy

Ostatnia aktualizacja: 23 października 2025, 12:03



 
W kolejnym tutorialu z cyklu Własny Serwer postanowiłem zainstalować Nginx jako odwrotne proxy.

Nginx to serwer WWW (HTTP) oraz serwer proxy dla HTTP i IMAP/POP3 stworzony przez Igora Sysojewa, a rozwijany i wspierany przez założoną przez niego firmę, Nginx, Inc. Zaprojektowany z myślą o wysokiej dostępności i silnie obciążonych serwisach z naciskiem na skalowalność i niską zajętość zasobów. Wydawany jest na licencji BSD.

Proxy jest zwykle używane w celu rozłożenia obciążenia na kilka serwerów, płynnego wyświetlania treści z różnych witryn internetowych lub przekazywania żądań przetwarzania do serwerów aplikacji za pośrednictwem protokołów innych niż HTTP.

W tym tutorialu zainstalujemy Nginx jako reverse proxy, który będzie działał przed serwerem www Apache w celu jego odciążenia. Takie rozwiązanie wpływa na poprawę wydajności i szybkości serwera www.

Nginx reverse proxy wymaga zainstalowania:
1. Serwer www Apache -> cz.1: wlasny-serwer-cz-1-serwer-www
2. Certyfikat TSL/SSL (nie jest niezbędny, lecz wysoce zalecany – większość stron w sieci działa w oparciu o protokół HTTPS) -> cz.3: wlasny-serwer-cz-3-certyfikat-tsl-ssl

Instalacja

apt update
apt install nginx

Sprawdzenie statusu nginx:
systemctl status nginx
Jeśli status jest nieaktywny:
systemctl enable nginx
Jeśli status wskazuje, że nie jest uruchomiony:
systemctl start nginx

Konfiguracja Nginx

Zrób kopię istniejącego pliku konfiguracyjnego:
cd /etc/nginx/sites-available/
mv default default.bak

Utwórz nowy plik konfiguracyjny, np.:
nano /etc/nginx/sites-available/default

#####1 linuxiarze.pl #####
server {
listen 80;
server_name linuxiarze.pl www.linuxiarze.pl;
root /var/www/linuxiarze.pl/public_html;
index index.php index.html index.htm;
location /
{
proxy_pass http://111.222.33.44:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_ssl_server_name on;
proxy_ssl_name $host;
}
}

Dodaj również poniższą konfigurację, jeśli używasz protokołu HTTPS (szyfrowany):
server {
listen 443 ssl http2;
server_name linuxiarze.pl www.linuxiarze.pl;
root /var/www/linuxiarze.pl/private_html;
index index.php index.html index.htm;
ssl_certificate /etc/letsencrypt/live/linuxiarze.pl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/linuxiarze.pl/privkey.pem;
location /
{
proxy_pass https://111.222.22.44:44380;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_ssl_server_name on;
proxy_ssl_name $host;
}
}

gdzie:
– IP serwer 111.222.33.44 zmień na IP swojego serwera
– ssl_certificate został wygenerowany przez Lets Encrypt

Zapisz plik konfiguracyjny Nginx i przeładuj usługę:
systemctl restart nginx

Jeśli używasz zapory ufw, dodaj nową regułę:
ufw allow 'Nginx Full'
i przeładuj ufw:
systemctl restart ufw

Konfiguracja Apache

Do tej pory Apache przyjmował połączenia HTTP na porcie 80 oraz HTTPS na porcie 443.
Od tej pory robi to Nginx, więc trzeba ustawić Apache na odbieranie połączeń od Nginx.

nano /etc/apache2/ports.conf
i zmień:
Listen 80
na:
Listen 8080

oraz:
Listen 443
na:
Listen 44380

Teraz zmień konfigurację Apache dla domeny:
nano /etc/apache2/sistes-available/000-default.conf
zmieniając port z:
VirtualHost *:80
na:
VirtualHost *:8080

Jeśli używasz protokołu HTTPS, zmień również port w pliku:
nano /etc/apache2/sistes-available/default-ssl.conf
zmieniając port z:
VirtualHost *:443
na:
VirtualHost *:44380

Po zapisaniu nowej konfiguracji Apache zrestartuj usługę:
systemctl restart apache2

Od tej pory Nginx będzie przyjmował na siebie wszystkie połączenia HTTP/HTTPS i przekazywał je do Apache.

Więcej informacji o Nginx uzyskasz wpisując:
man nginx
nginx --help

Click to rate this post!
[Total: 0 Average: 0]

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna jest chroniona przez reCAPTCHA i Google Politykę Prywatności oraz obowiązują Warunki Korzystania z Usługi.

Accessibility Toolbar