%META:TOPICPARENT{name="VirtTipsAndTricksGuide"}%
---+ Setting up an Apache HTTP server to proxy over a Virtuoso HTTP server
---++ Challenge
A common scenario is that your Virtuoso instance is handling HTTP (and SPARQL)
requests over its default HTTP port (8890
), possibly on a machine
with an internal hostname and/or IP address (e.g., virtuoso.internal.example.com
at 10.3.2.1
), but you want users to issue SPARQL requests to your main
company web server (e.g., www.example.com
) running Apache, as it must,
at a public IP address.
In other words, you want users to put things like this in their browser address bar --
http://www.example.com/sparql
-- while Virtuoso is expecting such requests to come in to --
http://virtuoso.internal.example.com:8890/sparql
---++ Solution
For Virtuoso to provide complete functionality, you'll need to set all of the
following Apache rules --
ProxyPass /conductor http://virtuoso.internal.example.com:8890/conductor
ProxyPassReverse /conductor http://virtuoso.internal.example.com:8890/conductor
ProxyPass /about http://virtuoso.internal.example.com:8890/about
ProxyPassReverse /about http://virtuoso.internal.example.com:8890/about
ProxyPass /category http://virtuoso.internal.example.com:8890/category
ProxyPassReverse /category http://virtuoso.internal.example.com:8890/category
ProxyPass /class http://virtuoso.internal.example.com:8890/class
ProxyPassReverse /class http://virtuoso.internal.example.com:8890/class
ProxyPass /data4 http://virtuoso.internal.example.com:8890/data4
ProxyPassReverse /data4 http://virtuoso.internal.example.com:8890/data4
ProxyPass /data3 http://virtuoso.internal.example.com:8890/data3
ProxyPassReverse /data3 http://virtuoso.internal.example.com:8890/data3
ProxyPass /data2 http://virtuoso.internal.example.com:8890/data2
ProxyPassReverse /data2 http://virtuoso.internal.example.com:8890/data2
ProxyPass /data http://virtuoso.internal.example.com:8890/data
ProxyPassReverse /data http://virtuoso.internal.example.com:8890/data
ProxyPass /describe http://virtuoso.internal.example.com:8890/describe
ProxyPassReverse /describe http://virtuoso.internal.example.com:8890/describe
ProxyPass /delta.vsp http://virtuoso.internal.example.com:8890/delta.vsp
ProxyPassReverse /delta.vsp http://virtuoso.internal.example.com:8890/delta.vsp
ProxyPass /fct http://virtuoso.internal.example.com:8890/fct
ProxyPassReverse /fct http://virtuoso.internal.example.com:8890/fct
ProxyPass /isparql http://virtuoso.internal.example.com:8890/isparql
ProxyPassReverse /isparql http://virtuoso.internal.example.com:8890/isparql
ProxyPass /ontology http://virtuoso.internal.example.com:8890/ontology
ProxyPassReverse /ontology http://virtuoso.internal.example.com:8890/ontology
ProxyPass /page http://virtuoso.internal.example.com:8890/page
ProxyPassReverse /page http://virtuoso.internal.example.com:8890/page
ProxyPass /property http://virtuoso.internal.example.com:8890/property
ProxyPassReverse /property http://virtuoso.internal.example.com:8890/property
ProxyPass /rdfdesc http://virtuoso.internal.example.com:8890/rdfdesc
ProxyPassReverse /rdfdesc http://virtuoso.internal.example.com:8890/rdfdesc
ProxyPass /resource http://virtuoso.internal.example.com:8890/resource
ProxyPassReverse /resource http://virtuoso.internal.example.com:8890/resource
ProxyPass /services http://virtuoso.internal.example.com:8890/services
ProxyPassReverse /services http://virtuoso.internal.example.com:8890/services
ProxyPass /snorql http://virtuoso.internal.example.com:8890/snorql
ProxyPassReverse /snorql http://virtuoso.internal.example.com:8890/snorql
ProxyPass /sparql-auth http://virtuoso.internal.example.com:8890/sparql-auth
ProxyPassReverse /sparql-auth http://virtuoso.internal.example.com:8890/sparql-auth
ProxyPass /sparql http://virtuoso.internal.example.com:8890/sparql
ProxyPassReverse /sparql http://virtuoso.internal.example.com:8890/sparql
ProxyPass /statics http://virtuoso.internal.example.com:8890/statics
ProxyPassReverse /statics http://virtuoso.internal.example.com:8890/statics
ProxyPass /void http://virtuoso.internal.example.com:8890/void
ProxyPassReverse /void http://virtuoso.internal.example.com:8890/void
ProxyPass /wikicompany http://virtuoso.internal.example.com:8890/wikicompany
ProxyPassReverse /wikicompany http://virtuoso.internal.example.com:8890/wikicompany
You may choose to omit some of these rules (e.g., those for /conductor
)
as an additional layer of security, but Virtuoso's built in ACLs provide a fairly
robust level of protection.
---++ Related
* [[VirtTipsAndTricksGuide][Virtuoso Tips and Tricks Collection]]