Я запускаю приложение Sinatra за пассажиром / nginx. Я пытаюсь заставить его отвечать как на вызовы http, так и на https. Проблема в том, что когда оба они определены в блоке сервера, на https-вызовы отвечают нормально, но http выдает ошибку 400 «Простой HTTP-запрос был отправлен на HTTPS-порт». Это статическая страница, поэтому я предполагаю, что Синатра не имеет к этому никакого отношения. Есть какие нибудь идеи как это починить?
Вот блок сервера:
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;
}
ssl on;
сообщает NGINX серверу ЛЮБОГО контента через SSL. Используйте флаг «ssl» в конце вашего, listen 443;
например, listen 443 ssl;
если ваш сервер доставляет трафик как http, так и https, и удалите ssl on;
директиву.
my.example.com:443
не работал. Измените это вместо того, чтобыhttps://my.example.com
работать. Странно, никогда не было такой проблемы с apache.