Как я могу настроить сервер Apache для прокси на http://localhost:3000/ и исключить некоторые URL? - PullRequest
1 голос
/ 07 мая 2019

Я хочу, чтобы мой Laravel использовал клиентскую версию Nuxt JS и использовал Laravel в качестве внутренней административной панели и API (ов).

Это мой код для прокси-проекта Laravel для Nuxt JS, но он не работает должным образом.

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

Я хочу исключить использование прокси-маршрутов "admin-панель" и "api".

Ответы [ 3 ]

0 голосов
/ 07 мая 2019

Вместо использования директивы ProxyPassMatch попробуйте просто исключить каждый URL из вашего прохода прокси:

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

Возможно, есть способ объединить их в одну строку с регулярным выражением, например: ProxyPass ^/(admin-panel|api)(.*)$ !

0 голосов
/ 15 мая 2019

Я решил проблему

Я публикую свой конфигурационный код apache2.Может быть, это может быть полезно для любого.

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

и в файле laravel routs / web.php напишите

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

, чтобы использовать URL проекта, а не проксиURL

0 голосов
/ 07 мая 2019
  • Возможно, вы захотите найти свой httpd.conf в вашем каталоге apache.Затем сделайте оригинальную копию и сохраните ее.
  • Затем, ищите VirtualHost, вы можете найти что-то похожее на:

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

Внесите изменения, как вы пожелаете.Возможно, вы захотите убедиться, что это правильно, прежде чем добавить:

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

Возможно, вы хотите что-то вроде этого:

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

После каждого изменения в httpd.conf вы можетехочу перезапустить apache и проверить, будет ли он работать.

...