Escrito por

Sales Engineer at InterSystems
Artigo Danusa Calixto · Fev. 8, 2024 2m read

Dividindo o acesso por porta no WebServer

Recentemente, precisei executar o WebGateway em uma porta adicional, mas com uma diferença - essa porta deve publicar apenas uma aplicação web.
A princípio, pensei em configurar o Web Gateway para permitir apenas aplicativos web específicos (~urls), mas a configuração do Web Gateway é de acordo com a configuração do Apache:

LoadModule csp_module_sa "/opt/webgateway/bin/CSPa24.so"
CSPModulePath "/opt/webgateway/bin/"
CSPConfigPath "/opt/webgateway/bin/"

E embora LoadModule tenha dois contextos permitidos, configuração do servidor e host virtual, o módulo csp deve ser carregado uma vez no contexto do servidor. Mas podemos usar dois VirtualHosts e veja como:

CSPModulePath /iris/csp/bin/
CSPConfigPath /iris/csp/bin/
LoadModule csp_module_sa /iris/csp/bin/CSPa24.so

Listen 443
Listen 10443
<VirtualHost *:443>
  <Location />
    CSP On
  </Location>
</VirtualHost>

<VirtualHost *:10443>
  <Location /myapp/>
    CSP On
  </Location>
</VirtualHost>
 

httpd.conf completo

ServerRoot "/iris/httpd"
DocumentRoot "/iris/csp"
CSPModulePath /iris/csp/bin/
CSPConfigPath /iris/csp/bin/
LoadModule csp_module_sa /iris/csp/bin/CSPa24.so
User irisusr
Group irisusr

ServerName localhost
PidFile /iris/httpd/logs/httpd.pid
TraceEnable off
Timeout 300
KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 120
UseCanonicalName Off

<Directory />
Options MultiViews FollowSymLinks
AllowOverride None
Require all granted
<FilesMatch "\.(log|ini|pid|exe|so)$">
Require all denied
</FilesMatch>
</Directory>

TypesConfig conf/mime.types
HostnameLookups Off

ErrorLog /iris/httpd/logs/error.log
LogLevel error
LogFormat "%h %l %u %t \"%r\" %>s %b" common

StartServers 5
MinSpareThreads 2
MaxSpareThreads 20
ServerLimit 256
ServerTokens Prod

Include conf/httpd-doc.conf
Include conf/httpd-local.conf
Listen 443
Listen 10443
<VirtualHost *:443>

# We need a servername, it has not effect but is required by apache
ServerName mysecureinstance

# Turn on SSL for this Virtual Host
SSLEngine on
SSLCertificateFile "/etc/certs/apache.crt"
SSLCertificateKeyFile "/etc/certs/apache.key"
<Location />
CSP On
</Location>
</VirtualHost>
<VirtualHost *:10443>

# We need a servername, it has not effect but is required by apache
ServerName mysecureinstance

# Turn on SSL for this Virtual Host
SSLEngine on
SSLCertificateFile "/etc/certs/apache.crt"
SSLCertificateKeyFile "/etc/certs/apache.key"
<Location /myapp/>
CSP On
</Location>
</VirtualHost>

 

Hosts virtuais usam o mesmo WebGateway e a mesma configuração CSP, mas apenas /myapp/urls estão disponíveis na porta 10443. Qualquer outro valor obtém 404 do Apache.