非 wws 的 Nginx HTTPS 配置问题

非 wws 的 Nginx HTTPS 配置问题

我需要为我的一个 rails 应用程序配置 nginx,以便通过 SSL 路由一些页面,但面临配置问题。

我有一个 SSL 证书,其通用名称是示例.com我的网站正在路由到示例.com来自 www.example.com

这是我的 nginx.conf:

  upstream unicorn {
    server unix:/tmp/unicorn.sock fail_timeout=0;
  }

  server {
    listen 80;
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
  }

  server {
    listen 443 ssl;
    server_name example.com;
    #return 301 $scheme://example.com$request_uri;

    ssl on;
    ssl_certificate      /certificate path;
    ssl_certificate_key  /key path;
  }

  server {
    listen 80 default_server;

    ssl_certificate      /certificate path;
    ssl_certificate_key  /key path;

    root /public directory;
    try_files $uri/index.html $uri @unicorn;

    location @unicorn {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://unicorn;
    }

    client_max_body_size 50M;
  }

我也尝试过不同的配置,但都不起作用。任何建议都非常感谢。提前谢谢。

答案1

我的问题已通过以下修改得到解决,回答这个问题可能会对其他人有所帮助:

  • 已移除ssl_certificatessl_certificate_keydefault_server块中移除。
  • 从 SSL 服务器块中删除了 URL 覆盖。
  • 已添加ssl_protocolsssl_ciphersSSL 服务器块

修改后配置如下:

upstream unicorn {
    server unix:/tmp/unicorn.sock fail_timeout=0;
}

server {
    listen 80;
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

server {
    listen 80 default_server;

    root /example.com/current/public;
    try_files $uri/index.html $uri @unicorn;

    ......
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl on;
    ssl_certificate      /example.com.crt;
    ssl_certificate_key  /example.com.key;
    ssl_protocols    TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;

    ......
}

相关内容