我跑後面乘客/ nginx的一個屈應用程序。我試圖讓它響應http和https呼叫。問題是,當兩者都在服務器塊中定義時,https調用通常會得到響應,但http會產生400「普通HTTP請求已發送到HTTPS端口」錯誤。這是一個靜態頁面,所以我猜測Sinatra與此無關。有想法該怎麼解決這個嗎?nginx的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;
}
我建議你接受@bobojam給出的答案 – 2012-12-27 08:47:23
在我的情況是,瀏覽器中的URL:'my.example.com:443'不起作用。改爲「https:// my.example.com」。奇怪的是,從來沒有與Apache的這個問題。 – Sebastian 2016-10-06 18:43:29
'ssl on;'通過SSL告訴NGINX服務器** ANY **內容。如果您的服務器同時提供http和https流量,並且刪除'ssl on;'指令,則在'listen 443;'listen listen 443 ssl;''末尾使用「ssl」標誌。 – Stphane 2016-12-10 09:44:53