GNU/Linux >> Belajar Linux >  >> Linux

Konfigurasi Apache untuk WebSockets menggunakan Proxy Terbalik

Saya menggunakan WebSockify di aplikasi web saya untuk terhubung ke server VNC menggunakan noVNC untuk mengaktifkan akses jarak jauh ke server Linux melalui browser. Itu adalah implementasi yang mudah karena tidak ada firewall yang terlibat dan port WebSocket dibuka. Namun, baru-baru ini saya harus bermigrasi ke server lain yang berada di belakang firewall dan saya tidak ingin membuka port karena dapat membahayakan seluruh sistem. Pada artikel ini, kami akan mengimplementasikan WebSockify melalui Apache Reverse Proxy.

Apa itu noVNC?

noVNC adalah klien HTML untuk VNC. Menggunakan noVNC, Anda dapat terhubung ke server VNC dari browser.

Mengapa WebSockify?

WebSockify menerjemahkan lalu lintas WebSockets ke lalu lintas soket normal. Websockify menerima jabat tangan WebSockets, menguraikannya, lalu mulai meneruskan lalu lintas antara klien dan target di kedua arah.

Pic Courtesy:datawookie.dev

Anggapan:

Diasumsikan bahwa WebSockify dan server web Apache Anda berjalan di host yang sama.

Penyiapan:

  • Apache v2.4
  • WebSockify untuk WebSockets pada port 6080
  • tidak ada VNC yang terpasang
  • server jarak jauh menjalankan VNC
  • CentOS Linux 7.9

Catatan: Kami tidak akan membahas secara rinci tentang cara mengkonfigurasi WebSockify dengan noVNC &VNC.

Konfigurasi Apache Reverse Proxy untuk Websockets

Langkah 1: Pastikan modul di bawah ini diaktifkan di Apache /etc/httpd/conf.modules.d/ folder.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so

Langkah 2: Buat VirtualHost yang memiliki aturan ReverseProxy dan Rewrite seperti di bawah ini:

URL Aplikasi Websockify

WebSockify berjalan pada port 6080 dan dapat diakses melalui url:https://localhost:6080

<VirtualHost *:80>
  ServerName techglimpse.com
  
  ProxyRequests on
  RequestHeader set X-Forwarded-Proto "http"	
  ProxyPass /console https://localhost:6080/
  ProxyPassReverse /console https://localhost:6080/  

  RewriteEngine on
  RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
  RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
  RewriteRule .* ws://localhost:6080%{REQUEST_URI} [P]
  
</VirtualHost>

Langkah 3: Mulai ulang server web Apache

# systemctl restart httpd


Linux
  1. Setup Apache Traffic Server sebagai Reverse Proxy di Linux

  2. Menggunakan HTTPS sebagai backend proxy di Apache 2.4

  3. UNIX / Linux:Cara Menginstal dan Mengonfigurasi mod_perl untuk Apache 2

  1. Panduan untuk menjalankan proxy Terbalik untuk HTTP(S), SSH, dan MySQL/MariaDB menggunakan NGINX

  2. Menggunakan mod_cluster di Apache

  3. Konfigurasi Apache untuk penghentian SSL di Cloud Load Balancer

  1. Cara Mengonfigurasi Nginx Reverse Proxy untuk Kibana

  2. Cara menginstal Nginx sebagai Reverse Proxy untuk Apache di Ubuntu 15.10

  3. Cara Mengonfigurasi Nginx sebagai Server Web dan Reverse Proxy untuk Apache di CentOS 8