I recently installed a Nagios server on a new CentOS 7 virtual machine (on Virtual Box).
One of the default checks included upon installation is a check on localhost to confirm that the HTTP server is responding. (First I had to install the check_http
plugin, see previous post.) The Nagios web interface reports a warning for this check:
HTTP WARNING: HTTP/1.1 403 Forbidden - 5261 bytes in 0.001 second response time
This is unexpected, since I can request the same page in a browser, which returns the Apache Welcome page.
When I run the check manually I get the same result, as expected:
# /usr/lib64/nagios/plugins/check_http -H localhost
HTTP WARNING: HTTP/1.1 403 Forbidden - 5261 bytes in 0.001 second response time |time=0.000907s|;;;0.000000 size 5261B;;;0
I checked with curl:
# curl http://localhost
This returns the HTML source of the Apache Welcome page. It looks like it is working, right? But looking at the headers returned by the Apache server also shows 403 Forbidden
:
# curl -I http://localhost
HTTP/1.1 403 Forbidden
...
The Apache Welcome page gives some hints about this behavior:
Are you the Administrator?
You should add your website content to the directory /var/www/html/.
To prevent this page from ever being used, follow the instructions in the file /etc/httpd/conf.d/welcome.conf.
The /etc/httpd/conf.d/welcome.conf
file begins with the following comments and directive:
#
# This configuration file enables the default "Welcome" page if there
# is no default index page present for the root URL. To disable the
# Welcome page, comment out all the lines below.
#
# NOTE: if this file is removed, it will be restored on upgrades.
#
<LocationMatch "^/+$">
Options -Indexes
ErrorDocument 403 /.noindex.html
</LocationMatch>
The Apache config is specifying that if there is no index page for the document root, return the Welcome page as an error document with a 403 HTTP status code.
Once I added a basic HTML file at /var/www/html/index.html
, Nagios returned a success message:
HTTP OK: HTTP/1.1 200 OK - 549 bytes in 0.001 second response time
The same issue came in to my node js server, where index.html was missing from DocumentRoot folder.
Added the index.html and its solved with status code 200.
Great.
Thanks