2
votes

Comment puis-je configurer le serveur Apache en proxy sur http: // localhost: 3000 / et exclure une URL?

Je veux que mon Laravel utilise Nuxt JS côté client et utilise Laravel comme panneau d'administration backend et api (s).

Ceci est mon code pour proxy du projet Laravel vers Nuxt JS mais cela ne fonctionne pas correctement. p >

<VirtualHost *:80>
    ServerName nuxt.local

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/nuxt/public

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPassMatch /^(admin-panel)(.*)$ !

    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    ProxyPreserveHost on
    LogLevel debug
 </VirtualHost>

Je souhaite empêcher les routes "panneau d'administration" et "api" d'atteindre le proxy.


0 commentaires

3 Réponses :


1
votes
  • Vous voudrez peut-être localiser votre httpd.conf dans votre répertoire apache. Ensuite, faites une copie originale et conservez-la.
  • Ensuite, recherchez VirtualHost, vous trouverez peut-être quelque chose de similaire à:

  • ProxyPassMatch ^(admin-panel)(.*)$ http://localhost:3000/
    

    Effectuez les modifications comme vous le souhaitez. Vous voudrez peut-être vous assurer que c'est correct avant d'ajouter:

    ProxyPassMatch /^(admin-panel)(.*)$ !
    

    Peut-être, vous voulez quelque chose comme ceci:

    <VirtualHost *:3000>
       ServerAdmin localhost
        DocumentRoot "/var/www/html/nuxt/public"
        ServerName localhost
    
        ProxyRequests On
        ProxyPreserveHost On
        ProxyPass / http://127.0.0.1:3000/
    
        <Directory "/var/www/html/nuxt/public">
            Options Indexes FollowSymLinks MultiViews
            MultiviewsMatch Any
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    

    Après chaque modification dans httpd.conf , vous voudrez peut-être redémarrer apache et tester pour voir si cela fonctionnerait.


0 commentaires

0
votes

Au lieu d'utiliser la directive ProxyPassMatch , essayez simplement d'exclure chaque URL de votre passe de proxy:

ProxyPass / http://localhost:3000/
ProxyPass /admin-panel !
ProxyPass /api !

Il existe probablement un moyen de les combiner en une seule ligne avec regular expression aussi, quelque chose comme: ProxyPass ^ / (admin-panel | api) (. *) $!


3 commentaires

Merci, mais dans ce cas, l'URL de mon panneau d'administration ne fonctionne pas


@NitinSinghNaruka Bien sûr que cela ne fonctionnera pas, vous avez demandé d'exclure la route panneau d'administration . Si vous supprimez le ProxyPass / admin-panel! de votre configuration Apache, cela fonctionnera à nouveau.


Je veux dire que le panneau d'administration ne gère pas avec Laravel



1
votes

J'ai résolu le problème

Je poste mon code de configuration apache2. Peut-être que cela peut être utile pour tout.

\URL::forceRootUrl(env('APP_URL'));

et dans le fichier laravel routes / web.php, écrivez le

<VirtualHost *:80>

  ServerName blog.net

  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html/blog/public

  <LocationMatch "/"> 
    allow from all 
    Satisfy any 
    ProxyPass http://localhost:3000/
    ProxyPassReverse http://localhost:3000/
  </LocationMatch>

  <LocationMatch "/admin-panel/*"> 
    allow from all 
    Satisfy any 
    ProxyPass http://localhost/blog/public
    ProxyPassReverse http://localhost/blog/public
  </LocationMatch>

  <LocationMatch "/admin/*"> 
    allow from all 
    Satisfy any 
    ProxyPass http://localhost/blog/public
    ProxyPassReverse http://localhost/blog/public
  </LocationMatch>

  <LocationMatch "/api/*"> 
    allow from all 
    Satisfy any 
    ProxyPass http://localhost/blog/public
    ProxyPassReverse http://localhost/blog/public
  </LocationMatch>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

pour utiliser l'URL du projet et non l'URL proxy


0 commentaires