1. 思路

Nginx HTTPS 配置分四步进行:

  1. 监听 80 端口,将 http://www.ilaoniu.cnhttp://ilaoniu.cn 都重定向到 https://www.ilaoniu.cn(一般使用 301,保险起见,也可以使用 302 临时重定向);
  2. 监听 443 端口,将 https://ilaoniu.cn 重定向到 https://www.ilaoniu.cn
  3. 监听 443 端口,处理来自 https://www.ilaoniu.cn 的请求;
  4. 更新站点 SSL 证书自动续期根路径。

2. 代码

代码如下:

/usr/local/nginx/conf/vhost/www.ilaoniu.cn.conf

server
    {
        listen 80;
        #listen [::]:80;
        server_name www.ilaoniu.cn ilaoniu.cn;
        return 301 https://$host$request_uri;
    }

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name ilaoniu.cn;

        ssl_certificate /usr/local/nginx/cert/www.ilaoniu.cn/cert.pem;
        ssl_certificate_key /usr/local/nginx/cert/www.ilaoniu.cn/cert.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

        return 301 https://www.ilaoniu.cn$request_uri;
    }

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name www.ilaoniu.cn;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/www.ilaoniu.cn/current/public;

        ssl_certificate /usr/local/nginx/cert/www.ilaoniu.cn/cert.pem;
        ssl_certificate_key /usr/local/nginx/cert/www.ilaoniu.cn/cert.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

        include rewrite/laravel.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/www.ilaoniu.cn.log;
    }

/usr/local/nginx/conf/ssl/www.ilaoniu.cn

# Le_Webroot='/home/wwwroot/www.ilaoniu.cn'
# 如果使用了 rewrite,更新站点 SSL 证书根目录
Le_Webroot='/home/wwwroot/www.ilaoniu.cn/current/public'