目录
一、前言
loang loang ago,在前后端分离之后,这个项目一直都是采用的http,并且有打算说是配置Https。拖了那么久终于在前阵子完成了,在这里做一个简要的记录。
二、SSL证书
2.1、什么是SSL证书
开启Https是数字证书的一种,由受信任的数字证书机构颁发。在服务器配置了SSL之后其访问具有身份验证和数据传输加密功能。
2.2、SSL证书如何获取
SSL证书的获取有诸多途径,我这里是用过腾讯云免费申请的SSl证书。
附上相关信息:
申请链接
2.3、申请到后如何使用
证书文件有以下几种(以我申请的为例):
以Nginx为例,配置Https分别需要文件夹中的以下文件:
三、Nginx
3.1、什么是Nginx
借用网络上的一段话:
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。 其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好
3.2、下载Nginx
在Nginx官网可以下载到你所需要的版本,然后解压到服务器上(Linux使用命令处理)
3.3、配置Nginx
Nginx的主要配置集中在他的Config文件,下面附上我的相关配置,每一行都有其作用的说明:
########### 每个指令必须有分号结束。################# # 配置用户或者组,默认为nobody nobody。 #usernobody; # 允许生成的进程数,设置值和cpu核心数一样(默认1) worker_processes2; # 错误日志相关, # 制定日志路径,级别。这个设置可以放入全局块,http块,server块, # 级别以此为:debug|info|notice|warn|error|crit|alert|emerg #error_loglogs/error.log; #error_loglogs/error.lognotice; #error_loglogs/error.loginfo; #指定nginx进程运行文件存放地址 #pidlogs/nginx.pid; events { # 最大连接数,默认为512 worker_connections1024; } http { # 文件扩展名与文件类型映射表 include mime.types; # 默认文件类型,默认为text/plain default_typeapplication/octet-stream; # access_log off; #取消服务日志 # 自定义格式 #log_formatmain$remote_addr - $remote_user [$time_local] "$request" #$status $body_bytes_sent "$http_referer" #"$http_user_agent" "$http_x_forwarded_for"; # combined为日志格式的默认值 #access_loglogs/access.logmain; # 允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。 sendfileon; # 连接超时时间,默认为75s,可以在http,server,location块。 keepalive_timeout65; # 开启缓存配置 # proxy_cache_path 缓存文件路径 # levels 设置缓存文件目录层次;levels=1:2 表示两级目录 # keys_zone 设置缓存名字和共享内存大小 # inactive 在指定时间内没人访问则被删除 # max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。 proxy_cache_path/XA/nginx/cache levels=1:2 keys_zone=xaCache:20m max_size=50g inactive=1d; # 开启gzip gzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_length 1k; # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明 gzip_comp_level 6; # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; # 是否在http header中添加Vary: Accept-Encoding,建议开启 gzip_vary on; # 禁用IE 6 gzip gzip_disable "MSIE [1-6]\."; # 设置压缩所需要的缓冲区大小 gzip_buffers 4 16k; # 设置gzip压缩针对的HTTP协议版本 gzip_http_version 1.0; server { # 监听端口 listen 80; # 监听地址 server_name guangmuhua.com; # 重定向 return 301 https://$server_name$request_uri; location / { # 允许cros跨域访问 add_header Access-Control-Allow-Origin *; # 代理转发 proxy_pass :8080; } # 匹配以/api/开头的请求。正则匹配,~为区分大小写,~*为不区分大小写。 location /api { # 允许cros跨域访问 add_header Access-Control-Allow-Origin *; # 代理转发 proxy_pass :9001; } # 缓存静态资源文件 location ~* ^.+\.(css|js|ico|gif|jpg|jpeg|png)$ { log_not_found off; # 关闭日志 access_log off; # 缓存时间7天 expires 7d; # 源服务器 proxy_pass :8080; # 指定上面设置的缓存区域 proxy_cache xaCache; # 缓存过期管理 proxy_cache_valid 200 302 1d; proxy_cache_valid 404 10m; proxy_cache_valid any 1h; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } } # HTTPS server server { # 监听端口,开启HTTP2 listen 443 ssl http2; # 监听地址 server_nameguangmuhua.com; # SSL正式和秘钥 ssl_certificateguangmuhua.crt; ssl_certificate_keyguangmuhua.key; # 储存session参数的缓存大小及过期时间 ssl_session_cacheshared:SSL:1m; ssl_session_timeout5m; # SSL加密套件 ssl_ciphersHIGH:!aNULL:!MD5; # 是否由服务器决定采用哪种加密算法 ssl_prefer_server_cipherson; location / { # 允许cros跨域访问 add_header Access-Control-Allow-Origin *; # 代理转发 proxy_pass :8080; } # 匹配以/api开头的请求 location /api { # 允许cros跨域访问 add_header Access-Control-Allow-Origin *; # 代理转发 proxy_pass :9001; } # 缓存静态资源文件 location ~* ^.+\.(css|js|ico|gif|jpg|jpeg|png)$ { log_not_found off; # 关闭日志 access_log off; # 缓存时间7天 expires 7d; # 源服务器 proxy_pass :8080; # 指定上面设置的缓存区域 proxy_cache xaCache; # 缓存过期管理 proxy_cache_valid 200 302 1d; proxy_cache_valid 404 10m; proxy_cache_valid any 1h; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } } }四、Nginx的启停
到Niginx的根目录下:
启动: start nginx
停止: nginx -s stop