GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara menginstal nginx sebagai Proxy Terbalik untuk Apache di Ubuntu 16.04

Tutorial ini menunjukkan bagaimana Anda dapat mengatur nginx sebagai proxy terbalik di depan server web Apache2 di Ubuntu 16.04. nginx (diucapkan "engine x") adalah server HTTP gratis, open-source, berkinerja tinggi. nginx dikenal dengan stabilitasnya, rangkaian fitur yang kaya, konfigurasi sederhana, dan konsumsi sumber daya yang rendah.

1 Catatan Awal

Dalam tutorial ini, saya menggunakan hostname server1.example.com dengan alamat IP 192.168.1.100. Setelan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.

Saya berasumsi bahwa Anda memiliki Apache vhost (saya akan menggunakan vhost default Apache dalam tutorial ini) yang mendengarkan pada port 80 pada alamat IP 192.168.1.100 yang ingin Anda proksi melalui nginx. Saya akan menggunakan tutorial Ubuntu LAMP sebagai dasarnya. Harap diperhatikan bahwa tutorial ini hanya mencakup http, bukan https (SSL).

2 Konfigurasi Apache

Hal pertama yang harus kita lakukan adalah mengkonfigurasi Apache vhost kita untuk mendengarkan di localhost (127.0.0.1) pada port yang tidak digunakan selain 80 (misalnya 8000). Buka /etc/apache2/ports.conf...

nano /etc/apache2/ports.conf

... dan ubah baris NameVirtualHost dan Listen untuk port 80 agar menggunakan port 8000:

# Jika Anda hanya mengubah port atau menambahkan lebih banyak port di sini, kemungkinan besar Anda juga
# harus mengubah pernyataan VirtualHost di
# /etc/apache2/sites-enabled/000-default. conf

Dengarkan 8000


Dengarkan 443



Dengarkan 443

Selanjutnya buka file konfigurasi vhost (mis. /etc/apache2/sites-available/000-default.conf)...

nano /etc/apache2/sites-available/000-default.conf

... dan ubah baris untuk menggunakan alamat IP 127.0.0.1 dan port 8000:

[...]

Kami akan mengkonfigurasi nginx sebagai proxy transparan, yaitu, itu akan meneruskan alamat IP pengguna asli di bidang yang disebut X-Forwarded-For ke backend Apache. Tentu saja, Apache backend harus mencatat alamat IP pengguna asli di log akses mereka alih-alih alamat IP nginx (127.0.0.1). Ada dua cara untuk mencapai ini:

1) Kita dapat memodifikasi baris LogFormat di /etc/apache2/apache2.conf dan mengganti %h dengan %{X-Forwarded-For}i:

nano /etc/apache2/apache2.conf
[...]#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" " gabunganLogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" gabungan[...]

2) Di Debian/Ubuntu, kita dapat menginstal modul Apache libapache2-mod-rpaf yang menangani pencatatan alamat IP yang benar:

apt-get -y install libapache2-mod-rpaf

Setelah semua perubahan ini, mulai ulang Apache:

layanan apache2 restart

3 Konfigurasi nginx

Jika nginx belum terinstal, instal sebagai berikut:

apt-get -y install nginx

Buat tautan startup sistemnya dan pastikan sudah dimulai:

systemctl aktifkan nginx.service
service nginx restart

Seharusnya sekarang mendengarkan di port 80.

Beberapa parameter proxy standar ada di file /etc/nginx/proxy_params:

nano /etc/nginx/proxy_params
proxy_set_header Host $http_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;

Karena kami akan menyertakan file itu nanti di bagian proxy dari nginx vhost kami untuk example.com, Anda mungkin ingin menambahkan arahan proxy lebih lanjut ke file itu jika Anda mau, mis. sebagai berikut:

proxy_set_header Host $http_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-Proxy_client $scheme_max; client_body_buffer_size 1m;proxy_intercept_errors aktif;proxy_buffering aktif;proxy_buffer_size 128k;proxy_buffers 256 16k;proxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;proxy_max_temp_file_size 0;proxy_read_timeout 300; Sekarang ubah vhost default untuk nginx - pastikan vhost menggunakan root dokumen yang sama dengan vhost Apache untuk example.com (mis. /var/www/html) sehingga nginx dapat mengirimkan file statis secara langsung tanpa meneruskan permintaan ke Apache:

nano /etc/nginx/sites-available/default
server {
mendengarkan 80 default_server;
mendengarkan [::]:80 default_server;

root /var/www/html;

# Tambahkan index.php ke daftar jika Anda menggunakan PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

lokasi / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
}
}

Ini adalah konfigurasi yang sangat sederhana yang akan mem-proxy semua permintaan ke Apache.

Muat ulang nginx agar perubahan diterapkan:

layanan nginx reload

Sekarang Anda dapat mengetik nama host server atau IP 192.168.1.100 ke dalam browser, dan Anda akan melihat situs web default Apache, tetapi kali ini dikirimkan melalui nginx.

Seperti yang saya katakan sebelumnya, ini adalah konfigurasi yang sangat sederhana yang mem-proxy semua permintaan ke Apache. Tetapi karena nginx jauh lebih cepat mengirimkan file statis (seperti JavaScript, CSS, gambar, file PDF, file HTML statis, dll.) daripada Apache, sebaiknya biarkan nginx menyajikan file-file ini secara langsung. Ini dapat dilakukan dengan menambahkan lokasi baru untuk file-file ini, mis. sebagai berikut:

server { mendengarkan 80 default_server;
mendengarkan [::]:80 default_server;

root /var/www/html;

# Tambahkan indeks. php ke daftar jika Anda menggunakan PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
} lokasi ~* \.(js|css|jpg|jpeg|gif|png|svg| ico|pdf|html|htm)$ { }}

Muat ulang nginx:

layanan nginx reload

Anda bahkan dapat mengatur header HTTP Kedaluwarsa untuk file-file ini sehingga browser akan menyimpan file-file ini (lihat Membuat File Statis Cache Browser Di nginx untuk detail lebih lanjut):

server { mendengarkan 80 default_server;
mendengarkan [::]:80 default_server;

root /var/www/html;

# Tambahkan indeks. php ke daftar jika Anda menggunakan PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
} lokasi ~* \.(js|css|jpg|jpeg|gif|png|svg| ico|pdf|html|htm)$ { berakhir 30 hari; }}

Sekarang kita dapat melakukan penyiapan ini selangkah lebih maju dengan membiarkan nginx melayani permintaan sebanyak yang dapat dipenuhi dan hanya meneruskan permintaan yang tersisa ditambah file PHP ke Apache:

server { mendengarkan 80 default_server;
mendengarkan [::]:80 default_server;

root /var/www/html;

# Tambahkan indeks. php ke daftar jika Anda menggunakan PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
proxy_pass http://localhost:8000;
include /etc/nginx/proxy_params;
} lokasi ~* \.(js|css|jpg|jpeg|gif|png|svg| ico|pdf|html|htm)$ { berakhir 30 hari; } lokasi @proxy { proxy_pass http://127.0.0.1:8000; sertakan /etc/nginx/proxy_params; } lokasi ~* \.php$ { proxy_pass http://127.0.0.1:8000; sertakan /etc/nginx/proxy_params; }}

Muat ulang nginx:

layanan nginx reload

Tentu saja, Anda dapat menyempurnakan pengaturan ini lebih jauh lagi, misalnya dengan menggunakan nginx proxy_cache (jika aplikasi Anda mengizinkannya - misalnya, Anda harus memastikan bahwa captcha atau keranjang belanja tidak di-cache, dan pengguna yang masuk selalu dapatkan salinan halaman baru) atau jika aplikasi Anda memiliki cache halaman penuh - nginx dapat mengakses cache halaman penuh secara langsung dalam kasus seperti itu (Anda dapat menemukan contoh dalam tutorial ini:Cara Mempercepat Drupal 7.7 Dengan Boost Dan nginx (Debian Squeeze)).

  • nginx:http://nginx.net/
  • Apache:http://httpd.apache.org/
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Cara menginstal Odoo 10 di Ubuntu 16.04 dengan Apache sebagai proxy terbalik

  2. Cara Menginstal Odoo 11 di Ubuntu 16.04 dengan Nginx sebagai Proxy Terbalik

  3. Cara Menginstal Odoo 10 di Ubuntu 16.04 dengan Nginx sebagai Proxy Terbalik

  1. Cara Mengatur Nginx sebagai Proxy Terbalik di Ubuntu 20.04

  2. Cara Menginstal Odoo 12 di Ubuntu 18.04 dengan Apache sebagai Proxy Terbalik

  3. Cara Menginstal Odoo 14 di Ubuntu 20.04 dengan Apache sebagai Proxy Terbalik

  1. Cara Mengonfigurasi Nginx Reverse Proxy untuk Kibana

  2. Cara Menginstal Flectra di Ubuntu 20.04 dengan Nginx sebagai Proxy Terbalik

  3. Cara Menginstal Odoo 12 di Ubuntu 18.04 dengan Nginx sebagai Proxy Terbalik