skip to Main Content

I want my Laravel to use Client side Nuxt JS and use Laravel as backend admin-panel and api(s).

This is my code to proxy Laravel project to Nuxt JS but it’s not properly working.

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

I want to exclude “admin-panel” and “api” routes from hitting the proxy.

3

Answers


  1. Chosen as BEST ANSWER

    I have solved the problem

    I am posting my apache2 config code. Might be this can be helpful for any.

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

    and in laravel routes/web.php file write the

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

    to use project URL not proxy URL


    • You might want to locate your httpd.conf inside your apache directory. Then, make an original copy and keep it.
    • Then, search for VirtualHost, you might find something similar to:

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

    Make the changes, however you wish. You might want to make sure, this is correct before you add:

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

    Maybe, you want something like this:

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

    After each changes in httpd.conf, you might want to restart apache and test to see if it would work.

    Login or Signup to reply.
  2. Instead of using the ProxyPassMatch directive try just excluding each url from your proxy pass:

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

    There is probably a way to combine them into one line with regular expression as well, something like: ProxyPass ^/(admin-panel|api)(.*)$ !

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search