konversikan nginx conf ke apache conf untuk proxypass

Dec 02 2020

Saya perlu mengubah conf nginx ini menjadi apache conf. Karena saya telah mencoba mengonversi, tetapi gagal mendapatkannya.

upstream apiUpstream {

  # 1. Set your port here
  server 127.0.0.1:8080;
  keepalive 64;
}

server {
  listen 80;
  listen 443 ssl;

  # 2. Set your API domain name here
  server_name yourdomain.com;

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # RequestHeader set X-Forwarded-Port "443" proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass http://apiUpstream/;  
    proxy_redirect off;
    proxy_read_timeout 240s;
  }

  # 3. SSL certificate set below
  # Here is added a sample certificate format of letsencrypt
  # You are free to remove it and configure yours here
  ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

Untuk Apache conf.

  ProxyRequests On
  ProxyPass   http://apiUpstream/ timeout=240
  ProxyPassReverse http://apiUpstream.com

Tapi itu tidak berfungsi, Bantu saya membuatnya bisa diterapkan. Dan saya tidak mengerti apa itu conf top upstream dan bagaimana mengubahnya menjadi apache juga.

Edit:

Saya mendapatkan kesalahan ini

peerjs.min.js:52 WebSocket connection to 'wss://api.example.com/peer/peerjs?key=peerjs&id=6yqD1MoKzkK&token=kp8g8w6pj2l' failed: Error during WebSocket handshake: 'Connection' header is missing

Dan saya sudah mencoba merubah conf cpanel untuk domain seperti ini.

<Proxy balancer://apiUpstream/>

 BalancerMember http:// 127.0.0.1:8080;
 keepalive 64;
 ProxySet lbmethod=byrequests
</Proxy>

ProxyRequests On
ProxyPass / balancer://apiUpstream/
ProxyPassReverse / balancer://apiUpstream/

Setelah menyimpan ini, saya tidak dapat memulai ulang apache dari WHM. itu mengatakan seperti anggota Balancer tidak dapat dimuat. Saya tidak tahu bagaimana cara memperbaikinya.

Screenshot

dan pesan kesalahan yang tepat

Syntax error on line 2 of /etc/apache2/conf.d/userdata/ssl/2_4/node/api.example.com/proxy_pass.conf: Dec 07 12:03:54 
ip-xx-xx-xxx-xx.ip.secureserver.net restartsrv_httpd[32106]: BalancerMember can not have a balancer name when defined in a location Dec 07 12:03:54

Jawaban

PawelHawro Dec 13 2020 at 07:08

Pertama-tama Anda memerlukan apache dengan modul yang dimuat:

  • mod_proxy
  • mod_proxy_http
  • mod_proxy_wstunnel (tersedia di httpd 2.4.5 dan yang lebih baru) dokumen

Di ubuntu Anda dapat mengaktifkan ini dengan:

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel

Anda mencoba untuk terhubung ke WebSocket, Anda perlu mengakses websocket dari aplikasi node Anda.

Coba sesuatu seperti ini:

<VirtualHost *:443>
  ServerName example.com
      
  ProxyPreserveHost On
  RewriteEngine On
     
  # If header Upgrade: websocket found, proxy to ws
  RewriteCond %{HTTP:Upgrade} =websocket [NC]  
  RewriteRule /(.*)           ws://localhost:8080/$1 [P,L] # If header not found use http RewriteCond %{HTTP:Upgrade} !=websocket [NC] RewriteRule /(.*) http://localhost:8080/$1 [P,L]

  
  # SSL config
  ...
  
</VirtualHost>