Using this configuration file:
check host laedesign.nl with address www.laedesign.nl if failed host www.laedesign.nl port 443 protocol https status 200 request "/" then alert if failed host laedesign.nl port 443 protocol https status 301 request "/" then alert if failed host www.laedesign.nl port 80 protocol http status 301 request "/" then alert if failed host laedesign.nl port 80 protocol http status 301 request "/" then alert if 3 restarts with 3 cycles then timeout depend nginx
(In other words: everything redirects 301 to HTTPS and WWW, and the HTTPS+WWW-version shows the website)
However, the following happens for https://www.laedesign.nl:
failed protocol test [HTTP] at [www.laedesign.nl]:443/ [TCP/IP SSL] -- HTTP error: Server returned status 301
However, I have no way to reproduce this.
$ curl --http1.1 -4 https://www.laedesign.nl/ -I HTTP/1.1 200 OK Server: nginx/1.9.6 Date: Mon, 28 Dec 2015 23:21:39 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Pingback: https://www.laedesign.nl/xmlrpc.php $ curl --http2 -4 https://www.laedesign.nl/ -I HTTP/2.0 200 server:nginx/1.9.6 date:Mon, 28 Dec 2015 23:31:34 GMT content-type:text/html; charset=UTF-8 x-pingback:https://www.laedesign.nl/xmlrpc.php
(I'm not sure if the configuration file I use is "the way to go" to monitor different websites on the same server, but it works for me)
The problem is that curl (and pretty much every browser) sees the website return status 200, except Monit thinks it receives an error 301.