What open source or free web servers are available to assist with system administration?
Applies to
HTTP web access
Answer
- Several NetApp products may require an HTTP server to retrieve files for installation, setup, configuration, and maintenance
- This may include installing OS upgrades, system firmware (BIOS, disk, IOM, BMC/SP, TPM, etc.) or other essential packages
- Ethernet and Fibre Channel switches, and SAS/FC bridges made by others, sold through NetApp (Brocade, Cisco, ATTO)
- These web servers are just a few of the examples that have worked in the past. The list is not exhaustive and we recommend that the reader evaluate these and other options for suitability and security requirements in their own environment. We recommend you carefully review the server documentation including any known vulnerabilities, bugs and caveats.
- These are general recommendations and no specific versioning is provided as that is beyond the scope of this KB. Different versions of the server, or even the same version running on different platforms, may perform better or worse than expected. However, for the purposes of serving one or two files to one or two clients, most servers mentioned here will manage that task regardless of version.
- Check the developer's website regularly for any updates and review any Release Notes and/or Changelog if provided.
- None of the servers listed here are provided or supported by NetApp. Refer to the server documentation for configuration help and any troubleshooting steps.
Name | Supported Platforms | Link |
---|---|---|
HFS ~ HTTP File Server | Windows | https://www.rejetto.com/hfs/?f=dl |
Apache HTTP Server ("httpd") |
|
|
Abyss Web Server | Windows, Mac, or Linux | https://aprelium.com/abyssws/download.php |
http-server | Mac | |
nginx | Windows, Linux, FreeBSD | http://nginx.org/ |
Python HTTP |
|
|
Powershell Webserver | PowerShell | https://github.com/MScholtes/WebServer/tree/master |
Additional Information
- Microsoft Internet Information Services (better know as IIS) - although neither "free" nor open-source - is often already readily available in most Windows environments. Be aware that you may need to add a MIME type like the following otherwise files that lack an extension, such as "kernel" used when netbooting, will not be served. This article on stackoverflow provides some useful information.
- File name extension: .
- Mime type: application/octet-stream
- nginx:
- Edit the nginx-<version>/conf/mime.types so that files with the named extensions are treated as binary files by the server and client:
- Remove or comment out (#) the line "
application/zip zip;
" - Add a line "
application/octet-stream tz gz tgz zip;
". Follow the existing whitespace conventions in the file and be sure to include the trailing semicolon. Add any additional file extensions that you may need in the same way. - Any files to server must be placed in the
nginx\html
directory. - Start the server in the background
C:\nginx> start nginx
. A new command window will open and then immediately close as the server detaches stdin/stdout from the window and continues running in the background. This is the expected behaviour. - Alternately start the server in the foreground
C:\nginx> nginx -g "daemon off;"
. - Verify the server is running using
C:\nginx> tasklist |find "nginx"
. - Press
Ctrl-C
or close the command window to stop a foreground server. EnterC:\nginx> nginx -s quit
from another command window to stop foreground or background servers. - If the server is already running you can re-read the configuration with
C:\nginx> nginx -s reload
.
- Also be aware that some server ports may already be in use by the OS, or administrative restrictions forbid access to privileged ports (1-1023). If that is your situation you will need to configure the web server to listen on another unused port and then specify that port in the URL. (Officially port 8080 is assigned to http-alt but in reality for local use only it can be anything between 1024-65535. Avoid using ports below 1024 other than port 80 for http or 445 for https.) The listening port is usually specified in the global configuration file for the server or passed as an argument on the commandline when starting the server.
- When specifying the host to connect to, it is often better to specify the IP address in the URL rather than the FQDN. This will help eliminate one source of connectivity problems (DNS reachability/name resolution).
- When possible verify the file hash (MD5/SHA1/SHA256 etc) to ensure the file transferred correctly.