Я хочу скрыть свой 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, Daniel
Для начала у вас есть две директивы, которые более или менее должны делать то же самое, используйте либо
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 /
может дать сбой интересным образом.