Назад | Перейти на главную страницу

Конфигурация прокси-сервера Apache для методов запроса

Я хочу скрыть свой HTTP-веб-интерфейс за прокси-сервером Apache. Моя текущая конфигурация:

<VirtualHost *:8180>
SSLEngine on
SSLCertificateFile /tools/Apache24/conf/ssl/---.crt
SSLCertificateKeyFile /tools/Apache24/conf/ssl/---.key

ServerName some.server.some.where
DocumentRoot "/applications/------/dist"
DirectoryIndex index.html

RewriteEngine On
RewriteRule /api/(.*)           http://localhost:8182/$1 [P,L]

ProxyPass /api/ http://localhost:8182/  
ProxyPassReverse /api/ http://localhost:8182/   

<Directory /applications/------/dist>
    Require all granted
</Directory>
</VirtualHost>

Благодаря этому я могу получить доступ к своему api через / api, но он работает только для запросов GET? Что мне нужно сделать, чтобы также разрешить POST, PUT и DELETE? BR, Даниэль

Для начала у вас есть две директивы, которые более или менее должны делать то же самое, используйте либо

RewriteEngine On
RewriteRule /api/(.*)           http://localhost:8182/$1 [P,L]

или

ProxyPass /api/ http://localhost:8182/  
ProxyPassReverse /api/ http://localhost:8182/

но не оба одновременно. (Лично я предпочитаю строфу ProxyPass).

Если не настроено иное, все методы должны быть изменены, а когда GET работает, POST и другие также должны работать. (Если, конечно, вы не запретите их где-нибудь еще.)

Но существует целый ряд сценариев, в которых используется URL-путь /api/ на обратном прокси, но устанавливая фактический API в корень / из http://localhost:8182/ может потерпеть неудачу интересными способами.