Мне нужна помощь с защитой моего тестового сервера XAMPP на портах 80 и 443. Я использую Apache 2.4.7 на машине с Windows 7.
Настройка следующая:
Я перенаправляю весь трафик, поступающий на IP-адрес моего сервера, порт 80 и 443, в приложение Java, работающее на localhost: 5000.
Код, выполняющий все это в файле httpd-vhosts.conf, следующий:
<VirtualHost *:80>
ServerName demo.website.com
ServerAlias website.com
<Location />
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerName demo.website.com
ServerAlias website.com
<Location />
ProxyPass /api/socket ws://localhost:5000/api/socket
ProxyPassReverse /api/socket ws://localhost:5000/api/socket
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
</Location>
SSLEngine on
SSLCertificateFile "conf/ssl.crt/cert1.crt"
SSLCertificateKeyFile "conf/ssl.key/cert1.key"
</VirtualHost>
Приведенный выше код работает для порта 80, но когда я добавляю его для порта 443, apace не запускается. Примечание: я включил LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
.
РЕДАКТИРОВАТЬ1: Ошибка, которую я получаю в Apache:
ProxyPass|ProxyPassMatch can not have a path when defined in a location
Кажется, проблема в этих двух строках, когда я их удаляю, Apache запускается нормально:
ProxyPass /api/socket ws://localhost:5000/api/socket
ProxyPassReverse /api/socket ws://localhost:5000/api/socket
РЕДАКТИРОВАТЬ2
В конце концов я сделал это:
<VirtualHost *:443>
ServerName demo.website.com
ServerAlias website.com
<Location /api/socket>
ProxyPass ws://localhost:5000/api/socket
ProxyPassReverse ws://localhost:5000/api/socket
</Location>
<Location />
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
</Location>
SSLEngine on
SSLCertificateFile "conf/ssl.crt/cert1.crt"
SSLCertificateKeyFile "conf/ssl.key/cert1.key"
</VirtualHost>
Это нормально с точки зрения безопасности?
<VirtualHost *:443> ServerName demo.website.com ServerAlias website.com <Location /api/socket> ProxyPass ws://localhost:5000/api/socket ProxyPassReverse ws://localhost:5000/api/socket </Location> <Location /> ProxyPass http://localhost:5000/ ProxyPassReverse http://localhost:5000/ </Location> SSLEngine on SSLCertificateFile "conf/ssl.crt/cert1.crt" SSLCertificateKeyFile "conf/ssl.key/cert1.key" </VirtualHost>
Это нормально с точки зрения безопасности?
Технически это будет работать так, как ожидалось / необходимо, и это не является непосредственной проблемой безопасности (например, запуск открытого прокси-сервера).
Для более безопасной среды вы можете пойти на компромисс и настроить гораздо больше, чем просто использовать настройки по умолчанию, с которыми поставляется пакет Apache httpd: