convertir nginx conf en apache conf pour proxypass

Dec 02 2020

J'ai besoin de convertir cette conf nginx en conf apache. Comme j'ai essayé de convertir, mais je n'ai pas réussi à l'obtenir.

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

Pour apache conf.

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

Mais cela ne fonctionne pas, aidez-moi à le rendre réalisable.Et je ne comprenais pas ce que la configuration amont supérieure et comment la convertir en apache également.

Éditer :

Je reçois cette erreur

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

Et j'ai essayé de changer la conf cpanel pour le domaine comme ça.

<Proxy balancer://apiUpstream/>

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

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

Après avoir enregistré cela, je ne peux pas redémarrer apache à partir de WHM. son dicton comme le membre Balancer ne peut pas être chargé. Je ne sais pas comment y remédier.

Capture d'écran

et message d'erreur exact

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

Réponses

PawelHawro Dec 13 2020 at 07:08

Tout d'abord, vous avez besoin d'apache avec des modules chargés:

  • mod_proxy
  • mod_proxy_http
  • mod_proxy_wstunnel (disponible en httpd 2.4.5 et versions ultérieures) docs

Dans ubuntu, vous pouvez l'activer avec:

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel

Vous essayez de vous connecter à WebSocket, vous devez accéder au websocket de votre application de nœud.

Essayez quelque chose comme ceci:

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