Я запускаю додаток 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
спрацювало. Дивно, ніколи не було цієї проблеми з апашем.