Configuring nginx as a reverse proxy for web application
Talaan ng mga Nilalaman:
- Mga kinakailangan
- Paggamit ng Nginx bilang isang Reverse Proxy
- Pagpapasa ng mga Header Hiling
- Ang pag-configure ng Nginx bilang isang Reverse Proxy sa isang non-HTTP na proxied server
- Karaniwang Mga Pagpipilian sa Reverse Proyekto Nginx
- Konklusyon
Ang isang reverse proxy ay isang serbisyo na tumatanggap ng isang kahilingan ng kliyente, ipinapadala ang kahilingan sa isa o higit pang mga na-prox na server, kinuha ang tugon, at inihatid ang tugon ng server sa kliyente.
Dahil sa pagganap at scalability nito, ang NGINX ay kadalasang ginagamit bilang reverse proxy para sa mga server ng HTTP at non-HTTP. Ang isang karaniwang reverse proxy na pagsasaayos ay upang ilagay ang Nginx sa harap ng Node.js, Python, o Java application.
Ang paggamit ng Nginx bilang isang reverse proxy ay nagbibigay sa iyo ng maraming karagdagang mga benepisyo:
- Ang Pagbabalanse ng Load - Maaaring magawa ng Nginx ang pagbabalanse ng pag-load upang ipamahagi ang mga kahilingan ng mga kliyente sa mga proxied server, na nagpapabuti sa pagganap, scalability, at pagiging maaasahan. Caching - Sa Nginx bilang isang reverse proxy, maaari mong i-cache ang pre-render na mga bersyon ng mga pahina upang mapabilis ang mga oras ng pag-load ng pahina. Gumagana ito sa pamamagitan ng pag-cache ng nilalaman na natanggap mula sa mga proxied na mga tugon ng server at ginagamit ito upang tumugon sa mga kliyente nang hindi kinakailangang makipag-ugnay sa mga na-proxied server para sa parehong nilalaman sa bawat oras. Pagwawakas ng SSL - Ang Nginx ay maaaring kumilos bilang isang pagtatapos ng SSL para sa mga koneksyon sa mga kliyente. Ito ay hawakan at i-decrypt ang mga papasok na koneksyon sa SSL at i-encrypt ang mga tugon ng proxied server. Compression - Kung ang proxied server ay hindi nagpapadala ng mga naka-compress na mga tugon, maaari mong i-configure ang Nginx upang i-compress ang mga tugon bago ipadala ang mga ito sa mga kliyente. Pagganyak ng DDoS Attacks - Maaari mong limitahan ang mga papasok na kahilingan at bilang ng mga koneksyon sa bawat solong IP address sa isang halagang karaniwang para sa mga regular na gumagamit. Pinapayagan ka ng Nginx na hadlangan o higpitan ang pag-access batay sa lokasyon ng kliyente, at ang halaga ng mga header ng kahilingan tulad ng "User-Agent" at "Referer".
Inilarawan ng artikulong ito ang mga hakbang na kinakailangan para sa pag-configure ng Nginx bilang isang reverse proxy.
Mga kinakailangan
Ipinapalagay namin na na-install mo ang Nginx sa iyong Ubuntu, CentOS, o server ng Debian.
Paggamit ng Nginx bilang isang Reverse Proxy
Upang i-configure ang Nginx bilang isang reverse proxy sa isang server ng HTTP, buksan ang file ng pagsasaayos ng block ng server ng domain at tukuyin ang isang lokasyon at isang na-proxied server sa loob nito:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }
Ang proxied server URL ay nakatakda gamit ang
proxy_pass
at maaaring gumamit ng
HTTP
o
HTTPS
bilang protocol, domain name o IP address, at isang opsyonal na port at URI bilang isang address.
Ang pagsasaayos sa itaas ay nagsasabi kay Nginx na ipasa ang lahat ng mga kahilingan sa
/app
lokasyon ng
/app
sa na-proxied server sa
http://127.0.0.1:8080
.
/etc/nginx/sites-available
direktoryo na
/etc/nginx/sites-available
direktoryo, habang sa direktoryo ng CentOS sa
/etc/nginx/conf.d
.
Upang mas mahusay na mailarawan kung paano gumagana ang
location
at
proxy_pass
direktiba, gawin natin ang sumusunod na halimbawa:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }
Kung ang pag-access ng isang bisita sa
http://example.com/blog/my-post
, i-proxy ng Nginx ang kahilingang ito sa
http://node1.com:8000/wordpress/my-post
.
Kapag ang address ng proxied server ay naglalaman ng isang URI, (
/wordpress/
), ang kahilingan na URI na ipinasa sa proxied server ay pinalitan ng isang URI na tinukoy sa direktiba. Kung ang address ng proxied server ay tinukoy nang walang isang URI, ang buong kahilingan ng URI ay ipinasa sa proxied server.
Pagpapasa ng mga Header Hiling
Kapag nag-proxies ng Nginx ang isang kahilingan, awtomatikong tinutukoy nito ang dalawang patlang ng header sa isang na-prox na mga kahilingan mula sa kliyente,
Host
at
Connection
, at tinatanggal ang mga walang laman na mga header.
Host
ay nakatakda sa variable na
$proxy_host
, at nakatakdang isara ang
Connection
.
Upang ayusin o itakda ang mga header para sa mga na-prox na koneksyon, gamitin ang direktiba ng
proxy_set_header
, na sinusundan ng halaga ng header. Maaari kang makahanap ng isang listahan ng lahat ng magagamit na Mga Hiling sa Mga Hiling at ang kanilang pinapayagan na mga halaga dito. Kung nais mong maiwasan ang isang header na maipasa sa proxied server, itakda ito sa isang walang laman na string
""
.
Sa sumusunod na halimbawa, binabago namin ang halaga ng larangan ng
Host
header sa
$host
at tinanggal ang patlang ng
Accept-Encoding
pamamagitan ng pagtatakda ng halaga nito sa isang walang laman na string.
location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }
Tuwing baguhin mo ang file ng pagsasaayos, kailangan mong i-restart ang serbisyo ng Nginx para sa bisa ng mga pagbabago.
Ang pag-configure ng Nginx bilang isang Reverse Proxy sa isang non-HTTP na proxied server
Upang i-configure ang Nginx bilang isang reverse proxy sa isang non-HTTP na proxied server, maaari mong gamitin ang mga sumusunod na direktiba:
-
fastcgi_pass- baligtarin ang proxy sa isang server ng FastCGI.uwsgi_pass- baligtarin ang proxy sa isang server ng uwsgi.scgi_pass- baligtarin ang proxy sa isang server ng SCGI.memcached_pass- baligtarin ang proxy sa isang Memcached server.
Ang isa sa mga pinaka-karaniwang halimbawa ay ang paggamit ng Nginx bilang isang reverse proxy sa PHP-FPM:
server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
Karaniwang Mga Pagpipilian sa Reverse Proyekto Nginx
Ang paghahatid ng nilalaman sa paglipas ng HTTPS ay naging pamantayan sa kasalukuyan. Sa bahaging ito, bibigyan ka namin ng isang halimbawa ng pagsasaayos ng proxy ng HTTPS Nginx kasama ang inirekumendang mga parameter ng Panginx na proxy at header.
location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }
-
proxy_http_version 1.1-proxy_http_version 1.1ng HTTP para sa pag-prox, sa pamamagitan ng default na ito ay nakatakda sa 1.0. Para sa mga Websockets at panatilihing mga koneksyon kailangan mong gamitin ang bersyon 1.1.proxy_cache_bypass $http_upgrade- Nagtatakda ng mga kondisyon kung saan ang tugon ay hindi makuha mula sa isang cache.Upgrade $http_upgradeatConnection "upgrade"- Ang mga patlang ng header na ito ay kinakailangan kung ang iyong aplikasyon ay gumagamit ng Websockets.Host $host- Ang$hostvariable sa sumusunod na pagkakasunud-sunod ng pagkakasunud-sunod ay naglalaman ng: hostname mula sa linya ng kahilingan, o hostname mula sa field ng header ng kahilingan ngHost, o ang pangalan ng server na tumutugma sa isang kahilingan.X-Real-IP $remote_addr- Ipasa ang totoong remote IP address ng bisita sa proxied server.X-Forwarded-For $proxy_add_x_forwarded_for- Isang listahan na naglalaman ng mga IP address ng bawat server na na-X-Forwarded-For $proxy_add_x_forwarded_forng kliyente.X-Forwarded-Proto $scheme- Kapag ginamit sa loob ng isang bloke ng server ng HTTPS, ang bawat tugon ng HTTP mula sa proxied server ay muling isinulat saX-Forwarded-Host $host- Tinukoy ang orihinal na host na hiniling ng kliyente.X-Forwarded-Port $server_port-X-Forwarded-Port $server_portang orihinal na port na hiniling ng kliyente.
Konklusyon
Nalaman mo kung paano gamitin ang Nginx bilang isang Reverse Proxy. Ipinakita namin sa iyo kung paano ipasa ang mga karagdagang mga parameter sa server at upang baguhin at itakda ang iba't ibang mga patlang ng header sa mga hiniling na mga kahilingan.
nginxHabang ang Apple - at partikular na iPhone - ang mga tsismis ay isang dosenang isang dosenang, ang isang ito ay maaaring may merito. Para sa AT & T, ang isang mas mura na plano sa serbisyo sa antas ng entry ay maaaring humimok sa mga mamimili na nasa-bakod na nagmamahal sa iPhone ngunit hindi ang mga buwanang bayad na kasama nito. Ang isang $ 10 na diskwento ay maaaring hindi mukhang magkano, ngunit maaari itong maakit ang mga bagong tagasuskribi, lalo na kung sinamahan ng isang mas murang iPhon
[Karagdagang pagbabasa: Ang pinakamahusay na mga teleponong Android para sa bawat badyet. ]
Ang isang operating system ay isang kernel, isang pagsuporta sa cast ng mga programa, at isang konsepto. Para sa ilang mga komersyal na entity, ito rin ay isang kampanya sa marketing, hype at kita. Ngunit, ang Linux operating system ay isa pang lasa ng sistemang operating ng Unix? Oo. Kung gusto mo, bilang isang may-ari ng negosyo, nais malaman kung ang Linux ay sapat na tulad ng Unix na maaari mong lumipat mula sa isang komersyal na lasa ng Unix sa Linux na may pinakamaliit na problema at gasto
[Karagdagang pagbabasa: 4 Mga proyektong Linux para sa mga newbies at intermediate users]
I-configure ang odoo na may nginx bilang isang reverse proxy
Ang Odoo ay may built-in na web server, ngunit sa karamihan ng mga kaso inirerekumenda na magkaroon ng isang reverse proxy sa harap nito na kikilos bilang isang tagapamagitan sa pagitan ng mga kliyente at server ng Odoo. Ang gabay na ito ay nagbibigay ng mga tagubilin sa kung paano gamitin ang Nginx bilang isang reverse proxy sa Odoo.







