私は、passenger/nginx の背後で Sinatra アプリを実行しています。http と https の両方の呼び出しに応答するようにしようとしています。問題は、両方がサーバー ブロックで定義されている場合、https 呼び出しには正常に応答しますが、http では 400「プレーン HTTP 要求が HTTPS ポートに送信されました」というエラーが発生することです。これは静的ページ用なので、Sinatra はこれとは何の関係もないと思います。これを修正する方法について何かアイデアはありますか?
サーバー ブロックは次のとおりです。
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;
}
ベストアンサー1
同様の問題に遭遇しました。1つのサーバーでは動作しますが、同じNginx構成の別のサーバーでは動作しません。Igorが回答した解決策がここにあります。http://forum.nginx.org/read.php?2,1612,1627#msg-1627
はい。または、SSL/非SSL サーバーを 1 つのサーバーに組み合わせることもできます。
server {
listen 80;
listen 443 default ssl;
# ssl on - remember to comment this out
}