我正在 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;
}
我遇到了类似的问题。它可以在一台服务器上运行,但不能在具有相同 Nginx 配置的另一台服务器上运行。找到了 Igor 在这里回答的解决方案http://forum.nginx.org/read.php?2,1612,1627#msg-1627
是的。或者您可以将 SSL/非 SSL 服务器合并在一台服务器中:
server {
listen 80;
listen 443 default ssl;
# ssl on - remember to comment this out
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)