处理 nginx 400“普通 HTTP 请求已发送到 HTTPS 端口”错误

2023-12-08

我正在 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(使用前将#替换为@)

处理 nginx 400“普通 HTTP 请求已发送到 HTTPS 端口”错误 的相关文章

随机推荐