VPS · Водич

nginx reverse proxy: водич

Ажурирано October 11, 2026 5 мин. читање

На оваа страница
  1. Што прави reverse proxy
  2. Чекор 1: Инсталирајте nginx
  3. Чекор 2: Направете proxy server блок
  4. Заглавијата и завршната коса црта
  5. WebSockets
  6. Чекор 3: Бесплатен HTTPS со Certbot
  7. Решавање на грешките 502, 504 и 413
  8. Извршувајте го на HytHost VPS
  9. ЧПП

Reverse proxy стои пред вашите апликации и им ги проследува барањата на посетителите. Со nginx напред, Node.js апликација, Docker контејнер или контролна табла што работи на некоја порта станува https://app.example.com, со HTTPS, правилни заглавија и едно место од каде управувате со сè.

Овој водич чекор по чекор го поставува nginx како reverse proxy на Ubuntu: server блокот, заглавијата, WebSockets, бесплатен HTTPS и грешките на кои најверојатно ќе наидете.

Што прави reverse proxy

  • Една јавна влезна точка. nginx слуша на портите 80 и 443 и го проследува секој домен или патека до вистинската апликација, па самите апликации никогаш не се изложени на интернетот.
  • HTTPS на едно место. nginx се грижи за сертификатите; апликациите зад него можат да зборуваат обичен HTTP на localhost.
  • Повеќе апликации на еден сервер. app.example.com, api.example.com и example.com/blog можат секој да оди до различен сервис.
  • Дополнително: компресија, кеширање, ограничувања за прикачување и правила за пристап, без да ја допирате апликацијата.

Чекор 1: Инсталирајте nginx

sudo apt update
sudo apt install nginx

Отворете http://your-server-ip и треба да ја видите страницата за добредојде на nginx. Ако користите ufw, дозволете веб сообраќај со sudo ufw allow 'Nginx Full'.

Проверете дали апликацијата работи и е достапна на самиот сервер, на пример со curl http://127.0.0.1:3000. Ако тоа не успее, нема да успее ни nginx.

Извршувајте nginx и вашите апликации со целосен root: HytHost KVM VPS пакетите почнуваат од €2.92/мес.

Погледнете VPS пакети

Чекор 2: Направете proxy server блок

На Ubuntu секој сајт добива датотека во /etc/nginx/sites-available/, која се вклучува со врска во sites-enabled. Направете /etc/nginx/sites-available/app.example.com:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

Вклучете го, тестирајте ја конфигурацијата и превчитајте:

sudo ln -s /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Насочете го A записот на доменот кон вашиот сервер и http://app.example.com сега ја прикажува вашата апликација. Секогаш извршете nginx -t пред превчитување: така ги фаќа грешките пред да го срушат сајтот.

Заглавијата и завршната коса црта

  • Host го пренесува доменот што го побарал посетителот. Без него nginx ја праќа адресата од proxy_pass, а апликациите што градат линкови од host-от се расипуваат.
  • X-Real-IP и X-Forwarded-For ја пренесуваат IP адресата на посетителот. Без нив секое барање изгледа како да дошло од 127.0.0.1.
  • X-Forwarded-Proto ѝ кажува на апликацијата дали посетителот користел HTTPS, за да не пренасочува во круг.

Пакетот nginx на Ubuntu ги содржи овие линии во /etc/nginx/proxy_params, па include proxy_params; е кратенка.

Завршната коса црта е важна. За апликација под патека:

location /app/ {
    proxy_pass http://127.0.0.1:3000/;
}

Со коса црта по портата, /app/login стигнува до апликацијата како /login. Без неа, апликацијата го добива целото /app/login.

WebSockets

Апликациите за разговор, live контролните табли и многу админ панели користат WebSockets, на кои им требаат две дополнителни заглавија. Додајте го овој map еднаш, во блокот http, на пример во нова датотека /etc/nginx/conf.d/websocket.conf:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

Потоа во location:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 1h;

nginx ја затвора проксираната врска што не праќа ништо 60 секунди; подолгиот proxy_read_timeout ги држи тивките WebSockets отворени. proxy_http_version 1.1 е стандарден дури од nginx 1.29.7, а Ubuntu 24.04 доаѓа со 1.24, затоа оставете ја линијата.

Чекор 3: Бесплатен HTTPS со Certbot

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d app.example.com

Certbot добива бесплатен Let's Encrypt сертификат, ги додава HTTPS поставките во вашиот server блок и може да пренасочува HTTP кон HTTPS. Сертификатот го обновува автоматски; проверете со sudo certbot renew --dry-run. Повеќе за сертификатите во како да добиете бесплатен SSL сертификат.

Решавање на грешките 502, 504 и 413

ГрешкаВообичаена причинаРешение
502 Bad Gatewaynginx не може да стигне до апликацијата: таа е запрена, паднала или слуша на друга порта или адресаСтартувајте ја апликацијата, проверете ја портата со curl http://127.0.0.1:PORT, прочитајте /var/log/nginx/error.log
504 Gateway TimeoutНа апликацијата ѝ требале повеќе од 60 секунди да одговориЗабрзајте го барањето или зголемете го proxy_read_timeout за таа location
413 Request Entity Too LargeПрикачувањето е поголемо од стандардното ограничување на nginx од 1 MBПоставете client_max_body_size 50m; во server блокот
Јамка на пренасочувањеАпликацијата не знае дека посетителот користел HTTPSПренесете X-Forwarded-Proto и кажете ѝ на апликацијата дека е зад proxy

По секоја промена: sudo nginx -t, потоа sudo systemctl reload nginx.

Извршувајте го на HytHost VPS

На reverse proxy му треба сервер каде ги контролирате портите 80 и 443. HytHost VPS пакетите работат на KVM со целосен root пристап, SSD складиште и DDoS заштита; изберете Ubuntu 24.04 и следете ги чекорите погоре. Ги извршувате апликациите во контејнери? Прво поставете Docker со како да инсталирате Docker на Ubuntu и врзете ги портите на контејнерите за 127.0.0.1, за само nginx да може да стигне до нив.

ЧПП

Често поставувани прашања

Reverse proxy ги проследува барањата до една или повеќе апликации зад него. Load balancer е reverse proxy што ги распределува барањата меѓу неколку копии на истата апликација. nginx може и двете, со блок upstream во кој се наведени копиите.

nginx не може да стигне до апликацијата зад него. Проверете дали апликацијата работи и слуша на адресата и портата од proxy_pass и прочитајте /var/log/nginx/error.log за точната причина.

Не, кога апликацијата работи на истиот сервер. nginx се грижи за HTTPS за посетителите и со апликацијата разговара преку обичен HTTP на 127.0.0.1, што никогаш не ја напушта машината.

Дајте ѝ на секоја апликација свој server блок со свој server_name, како app.example.com и api.example.com, секој со proxy_pass кон различна порта.

Да. Објавете ја портата на секој контејнер само на 127.0.0.1 и насочете го proxy_pass кон неа. Така контејнерите остануваат надвор од јавниот интернет, што е важно бидејќи објавените порти на Docker го заобиколуваат ufw.

Хостирајте ги вашите апликации зад nginx

HytHost KVM VPS пакетите со целосен root пристап, SSD складиште и DDoS заштита почнуваат од €2.92/мес.

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

Дали овој водич ви беше корисен?