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.
3 Réponses :
httpd.conf
dans votre répertoire apache. Ensuite, faites une copie originale et conservez-la. 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.
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) (. *) $!
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
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