Конфигурация Nodejs / Apache для прокси - PullRequest
0 голосов
/ 30 сентября 2018

Я хочу использовать прокси-сервер Nodejs / Apache для обслуживания моих API, но после добавления ниже apache (httpd) config, похоже, что config не работает.

ОС:

CentOS 6

/ etc / httpd / conf / httpd.conf:

...
<VirtualHost *:80>
   ServerName example.com
   ServerAlias www.example.com
 
   DocumentRoot /home/MyUser/public_html
   <Directory />
      Options -Indexes +FollowSymLinks
      AllowOverride None
      Require all granted
   </Directory>
 
   ProxyRequests Off
   ProxyPreserveHost On
   ProxyVia Full
   <Proxy *>
      Require all granted
   </Proxy>
 
   <Location /api>
      ProxyPass http://MyVpsIp:1337
      ProxyPassReverse http://MyVpsIp:1337
   </Location>
 
</VirtualHost>
...

после:

sudo service httpd restart

Открыть пример.com / api в браузере:

Not Found
The requested URL /api was not found on this server.

РЕДАКТИРОВАТЬ: когда я открываю example.com:1337/api в браузере, все в порядке!но я хочу example.com/api

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Если вы хотите использовать прокси-сервер с помощью Location, для вас должно работать следующее.

  <Location /test>
            ProxyPass http://127.0.0.1:3001/  retry=0 timeout=60 keepalive=On
            ProxyPassReverse http://127.0.0.1:3001/
  </Location>

Вопрос в том, как будет использоваться ваш URL? example.com / api или example.com / api / smthng

Если вы будете использовать api между слешами, как / api /, вам нужно указать его в теге Locationнапример, как

/ test to / test /

  <Location /test/>
            ProxyPass http://127.0.0.1:3001/  retry=0 timeout=60 keepalive=On
            ProxyPassReverse http://127.0.0.1:3001/
  </Location>

И еще один момент, как вы видите, я также добавил / в конце моего ProxyPass (ProxyPass http: .....: 3001 /).Итак, если вы поделитесь с нами некоторыми примерами URL-адресов, мы можем указать правильную конфигурацию для вашего случая.

Например, в моем примере: есть прослушивающий порт VirtualHost 3001 и существует index.html (content is 'test ') хранится в DocumentRoot.Поэтому, если я посмотрю: 3001, он выдаст test.

Однако, если я хочу использовать Proxy (допустим, этот VirtualHost работает на порту 88).Поэтому, если я вызову some_ip: 88 / test, он вернет test в соответствии с моим первым примером Location .И мне нужно вызвать some_ip: 88 / test / для моего второго примера Location.

0 голосов
/ 30 сентября 2018

Попробуйте отредактировать proxypass для добавления местоположения и удаления его контейнера тегов каталога.

  ProxyPass /api/ http://MyVpsIp:1337/
  ProxyPassReverse /api/ http://MyVpsIp:1337/
</VirtualHost>
...