Membuat webserver localhost dengan nginx dan php
Daftar Isi:
- Prasyarat
- Menggunakan Nginx sebagai Reverse Proxy
- Melewati Judul Permintaan
- Mengkonfigurasi Nginx sebagai Reverse Proxy ke server proksi non-HTTP
- Opsi Proxy Terbalik Nginx Umum
- Kesimpulan
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
.
/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 koneksikeepalive
Anda perlu menggunakan versi 1.1.proxy_cache_bypass $http_upgrade
- Menetapkan kondisi di mana respons tidak akan diambil dari cache.Upgrade $http_upgrade
danConnection "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 permintaanHost
, 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 keX-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.
nginxForum WiMax Menyiapkan Lab Sertifikasi di India
Forum WiMax sedang menyiapkan lab sertifikasi di India setelah keputusan pemerintah lokal untuk melelang spektrum untuk ...
Cara menyiapkan Proxy untuk aplikasi Windows Store di Windows 8/10
Pelajari cara mengaktifkan atau mengkonfigurasi Proxy Server for Store atau Aplikasi metro di Windows 10/8 menggunakan perintah Netsh, pengaturan Proxy atau melalui pengaturan Kebijakan Grup.
Konfigurasikan odoo dengan nginx sebagai proxy terbalik
Odoo hadir dengan server web bawaan, tetapi dalam kebanyakan kasus disarankan untuk memiliki proxy terbalik di depannya yang akan bertindak sebagai perantara antara klien dan server Odoo. Panduan ini memberikan instruksi tentang cara menggunakan Nginx sebagai proxy terbalik ke Odoo.