Linux 下的 Nginx 配置 NameCheap 证书(Comodo PositiveSSL)实现 HTTPS 加密访问
证书申请、激活这里不记录了,有免费的也有付费的,自己玩去~
激活后下载的包里有一个 ca-bundle 和一个 crt 文件
1、检查 Nginx SSL 模块
# 进入 nginx 启动目录执行 -V
/usr/sbin/nginx -V
如果没有 --with-http_ssl_module 那就要装 SSL 模块了
2、合并文件
将 ca-bundle 文件的所有内容复制到 crt 文件里面,合并成一个新的 crt 文件
3、 新建文件夹
在 Nginx 的 conf 文件夹的同级目录新建 ssl
cd /etc/nginx # 进入 nginx 安装目录 sudo mkdir ssl # 建立文件夹 sudo chmod -R 777 #给权限:非必须
4、上传文件到 ssl 目录
将合并后的 crt 文件 和生成 csr 文件的时候同时生成的 key 文件上传到 ssl 目录(最好命名一致)
5、配置 nginx 的 conf
进入 conf 所在目录新建一个文件 后缀为 .conf
cd /etc/nginx/cnfg.d
sudo vim meta.conf
我直接贴代码了
server { listen 80; server_name metamxxxx.games www.metamxxxx.games; rewrite ^(.*) https://www.metamxxxx.games$1 permanent; } server { listen 443 ssl http2; server_name www.metamxxxx.games; ssl_certificate /etc/nginx/ssl/metamxxxx.games.crt; ssl_certificate_key /etc/nginx/ssl/metamxxxx.games.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_timeout 10m; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_buffer_size 1400; add_header Strict-Transport-Security max-age=15768000; ssl_stapling on; ssl_stapling_verify on; gzip on; gzip_buffers 32 4K; gzip_comp_level 6; gzip_min_length 100; gzip_types text/plain font/ttf application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持) gzip_vary on; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization'; location / { proxy_pass http://127.0.0.1:8000; } } server { listen 443 default_server; server_name _; ssl_certificate /etc/nginx/ssl/metamxxxx.games.crt; ssl_certificate_key /etc/nginx/ssl/metamxxxx.games.key; return 500; }
这里已经配了 https 访问、http 转 https、防止空主机头访问
6、重新加载 Nginx
sudo /usr/sbin/nginx -s reload
# 重启也行,但是不建议
7、检查域名指向是否无误,安全组、防火墙、端口有没有开放 443
确认无误就可以正常访问的了