title: Dealing with nginx 400 "The plain HTTP request was sent to HTTPS port" error
body: <p>I'm running a Sinatra app behind passenger/nginx. I'm trying to get it to respond to both http and https calls. The problem is, when both are defined in the server block https calls are responded to normally but http yields a 400 "The plain HTTP request was sent to HTTPS port" error. This is for a static page so I'm guessing Sinatra has nothing to do with this. Any ideas on how to fix this?</p>
  
  <p>Here's the server block:</p>
  
  <pre><code>server {
          listen 80;
          listen 443  ssl;
          server_name localhost;
          root /home/myhome/app/public;
          passenger_enabled on;
  
          ssl on;
          ssl_certificate      /opt/nginx/ssl_keys/ssl.crt;
          ssl_certificate_key  /opt/nginx/ssl_keys/ssl.key;
          ssl_protocols        SSLv3 TLSv1;
          ssl_ciphers          HIGH:!aNULL:!MD5;
  
          location /static {
              root  /home/myhome/app/public;
              index  index.html index.htm index.php;
          }
  
          error_page 404 /404.html;
  
          # redirect server error pages to the static page /50x.html
          error_page 500 /500.html;
  
          access_log /home/myhome/app/logs/access.log;
          error_log /home/myhome/app/logs/error.log;
  }
  </code></pre>