Android

Menyiapkan proxy reverse nginx

Membuat webserver localhost dengan nginx dan php

Membuat webserver localhost dengan nginx dan php

Daftar Isi:

Anonim

Proksi terbalik adalah layanan yang mengambil permintaan klien, mengirimkan permintaan ke satu atau lebih server proksi, mengambil respons, dan mengirimkan respons server ke klien.

Karena kinerja dan skalabilitasnya, NGINX sering digunakan sebagai proksi terbalik untuk server HTTP dan non-HTTP. Konfigurasi proxy terbalik biasanya adalah menempatkan Nginx di depan aplikasi Node.js, Python, atau Java.

Menggunakan Nginx sebagai proxy terbalik memberi Anda beberapa manfaat tambahan:

  • Load Balancing - Nginx dapat melakukan load balancing untuk mendistribusikan permintaan klien di server proksi, yang meningkatkan kinerja, skalabilitas, dan keandalan. Caching - Dengan Nginx sebagai proxy terbalik, Anda dapat men-cache versi halaman yang telah dirender untuk mempercepat waktu pemuatan halaman. Ini bekerja dengan melakukan caching konten yang diterima dari tanggapan server proksi dan menggunakannya untuk menanggapi klien tanpa harus menghubungi server proksi untuk konten yang sama setiap kali. Pengakhiran SSL - Nginx dapat bertindak sebagai titik akhir SSL untuk koneksi dengan klien. Ini akan menangani dan mendekripsi koneksi SSL yang masuk dan mengenkripsi respons server proksi. Kompresi - Jika server proksi tidak mengirim respons terkompresi, Anda dapat mengonfigurasi Nginx untuk mengkompres respons sebelum mengirimnya ke klien. Mengurangi Serangan DDoS - Anda dapat membatasi permintaan masuk dan jumlah koneksi per alamat IP tunggal ke nilai yang khas untuk pengguna biasa. Nginx juga memungkinkan Anda untuk memblokir atau membatasi akses berdasarkan lokasi klien, dan nilai header permintaan seperti "User-Agent" dan "Referer".

Artikel ini menguraikan langkah-langkah yang diperlukan untuk mengkonfigurasi Nginx sebagai proxy terbalik.

Prasyarat

Kami berasumsi bahwa Anda telah menginstal Nginx di server Ubuntu, CentOS, atau Debian Anda.

Menggunakan Nginx sebagai Reverse Proxy

Untuk mengkonfigurasi Nginx sebagai proxy terbalik ke server HTTP, buka file konfigurasi blok server domain dan tentukan lokasi dan server proksi di dalamnya:

server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }

URL server proksi diatur menggunakan direktif proxy_pass dan dapat menggunakan HTTP atau HTTPS sebagai protokol, nama domain atau alamat IP, dan port opsional dan URI sebagai alamat.

Konfigurasi di atas memberi tahu Nginx untuk meneruskan semua permintaan ke /app lokasi /app ke server proksi di http://127.0.0.1:8080 .

Pada distribusi berbasis Ubuntu dan Debian, file blok server disimpan di direktori /etc/nginx/sites-available , sedangkan pada CentOS di direktori /etc/nginx/conf.d .

Untuk menggambarkan lebih baik cara arahan location dan proxy_pass bekerja, mari kita ambil contoh berikut:

server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }

Jika pengunjung mengakses http://example.com/blog/my-post , Nginx akan mem-proxy permintaan ini ke http://node1.com:8000/wordpress/my-post .

Ketika alamat server proksi berisi URI, ( /wordpress/ ), permintaan URI yang diteruskan ke server proksi digantikan oleh URI yang ditentukan dalam arahan. Jika alamat server proksi ditentukan tanpa URI, URI permintaan penuh diteruskan ke server proksi.

Melewati Judul Permintaan

Ketika Nginx mem-proksi permintaan, ia secara otomatis mendefinisikan dua bidang header dalam permintaan yang diproksi dari klien, Host dan Connection , dan menghapus header kosong. Host diatur ke variabel $proxy_host , dan Connection diatur untuk menutup.

Untuk menyesuaikan atau mengatur tajuk untuk koneksi yang diproksi, gunakan direktif proxy_set_header , diikuti dengan nilai tajuk. Anda dapat menemukan daftar semua Header Permintaan yang tersedia dan nilai yang diizinkan di sini. Jika Anda ingin mencegah agar header tidak diteruskan ke server proxy, setel ke string kosong "" .

Dalam contoh berikut, kami mengubah nilai bidang header Host ke $host dan menghapus bidang header Accept-Encoding dengan mengatur nilainya ke string kosong.

location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }

Setiap kali Anda memodifikasi file konfigurasi, Anda harus me-restart layanan Nginx agar perubahan diterapkan.

Mengkonfigurasi Nginx sebagai Reverse Proxy ke server proksi non-HTTP

Untuk mengonfigurasi Nginx sebagai proksi terbalik ke server proksi non-HTTP, Anda dapat menggunakan arahan berikut:

  • fastcgi_pass - membalikkan proxy ke server FastCGI. uwsgi_pass - membalikkan proxy ke server uwsgi. scgi_pass - membalikkan proxy ke server SCGI. memcached_pass - membalikkan proxy ke server Memcached.

Salah satu contoh paling umum adalah dengan menggunakan Nginx sebagai proxy terbalik ke PHP-FPM:

server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }

Opsi Proxy Terbalik Nginx Umum

Melayani konten melalui HTTPS telah menjadi standar saat ini. Pada bagian ini, kami akan memberi Anda contoh konfigurasi proksi balik HTTPS Nginx termasuk parameter dan header proksi Nginx yang disarankan.

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 - Menentukan versi protokol HTTP untuk proxy, secara default ditetapkan ke 1.0. Untuk Websockets dan koneksi keepalive Anda perlu menggunakan versi 1.1. proxy_cache_bypass $http_upgrade - Menetapkan kondisi di mana respons tidak akan diambil dari cache. Upgrade $http_upgrade dan Connection "upgrade" - Field header ini diperlukan jika aplikasi Anda menggunakan Websockets. Host $host - Variabel $host dalam urutan prioritas berikut ini berisi: nama host dari baris permintaan, atau nama host dari bidang header permintaan Host , atau nama server yang cocok dengan permintaan. X-Real-IP $remote_addr - Meneruskan alamat IP jarak jauh pengunjung asli ke server yang diproksi. X-Forwarded-For $proxy_add_x_forwarded_for - Daftar yang berisi alamat IP dari setiap server yang klien telah proksi melalui. X-Forwarded-Proto $scheme - Ketika digunakan di dalam blok server HTTPS, setiap respons HTTP dari server yang diproksi ditulis ulang ke X-Forwarded-Host $host - Menentukan host asli yang diminta oleh klien. X-Forwarded-Port $server_port - Menentukan port asli yang diminta oleh klien.

Kesimpulan

Anda telah belajar cara menggunakan Nginx sebagai Reverse Proxy. Kami juga telah menunjukkan kepada Anda cara meneruskan parameter tambahan ke server dan untuk memodifikasi dan mengatur bidang tajuk yang berbeda dalam permintaan yang diproksi.

nginx