konvertiere nginx conf in apache conf für proxypass

Dec 02 2020

Ich muss dieses Nginx Conf in Apache Conf konvertieren. Da habe ich versucht zu konvertieren, aber nicht bekommen.

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;
}

Zu apache conf.

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

Aber es funktioniert nicht. Hilf mir, es funktionsfähig zu machen. Und ich habe nicht verstanden, was Top-Upstream-Conf ist und wie man es auch in Apache konvertiert.

Bearbeiten:

Ich erhalte diesen Fehler

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

Und ich habe versucht, das cpanel conf für die Domain wie folgt zu ändern.

<Proxy balancer://apiUpstream/>

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

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

Nach dem Speichern kann ich Apache nicht über WHM neu starten. Sein Sprichwort wie das Balancer-Mitglied kann nicht geladen werden. Ich weiß nicht, wie ich das beheben soll.

Bildschirmfoto

und genaue Fehlermeldung

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

Antworten

PawelHawro Dec 13 2020 at 07:08

Zunächst benötigen Sie Apache mit geladenen Modulen:

  • mod_proxy
  • mod_proxy_http
  • mod_proxy_wstunnel (verfügbar in httpd 2.4.5 und höher) docs

In Ubuntu können Sie dies aktivieren mit:

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel

Sie versuchen, eine Verbindung zu WebSocket herzustellen, die Sie zum Websocket Ihrer Knoten-App benötigen.

Versuchen Sie so etwas:

<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>