14.1.The HTTP Server

When a request comes in to one of the network interfaces where Virtuoso is listening for HTTP requests, it is matched against a set of virtual directory path mappings. A path mapping has the following attributes:

Interface - interface coming from HTTP request
Virtual Host - matched virtual host name
Logical Path - logical path
Mapped Path - physical location of the resource
Is in DAV - If the resource is placed in WebDAV domain
Default page - the name of the page to be returned if none is supplied
Browseable - allows for returning the list of files in a directory if no specific file is requested
Security - security restrictions to the resource
Authentication Function - Virtuoso/PL procedure name, which performs authentication
Realm - an string applied to Authentication function
Request Post-processing Function - Virtuoso/PL procedure name, which performs post-processing action, before sending the response
Database User Account - User account name, on behalf of which active content will be executed

Figure14.1.HTTP Server Conceptual Diagram

HTTP Server Conceptual Diagram

Incoming requests are also checked against the HTTP access control lists. These lists rely on the following attributes of the connection to determine whether the request should be answered:

Client Host or IP Address - the incoming requestor is pattern matched to specify a range.
Destination Host or IP Address - Destination IP/Host match, also applicable to the proxy capabilities.

The Virtuoso HTTP server is HTTP/1.1 compliant. It can accept persistent connections from HTTP/1.1 clients. The HTTP/1.0 requests are processed as normal without the persistent connections feature.

Persistent HTTP connections offer several advantages, such as:

Reduced CPU usages by opening and closing fewer connections.
HTTP requests and responses can be pipelined on a connection. Pipelining allows a client to make multiple requests without waiting for each response, allowing a single TCP connection to be used much more efficiently with lower elapsed time.
Network traffic is reduced.
Latency on subsequent requests is reduced.
[Tip] See Also:

RFC2616 for more details