文章目录
- 一.OpenSSL下载
- 二.生成证书
- 三.nginx配置
- 四.常见错误
- 4.1 the event "ngx_master_xxxx" was not signaled for 5s
一.OpenSSL下载
# ubuntu
sudo apt-get update
sudo apt-get install openssl
二.生成证书
# 创建存放证书的目录
mkdir /usr/local/mydata/ssl
cd /usr/local/mydata/ssl
# 创建服务器私钥 需要输入一个密码保护私钥
openssl genpkey -algorithm RSA -out test_server.key -aes256
# 创建签名请求的证书(CSR) 该请求包含组织、域名等信息,用于验证证书的所有权和身份。
openssl req -new -key test_server.key -out test_server.csr
# 生成一个有效期为 365 天的证书 使用以下命令创建自签名 SSL 证书 输入上方密码
openssl x509 -req -days 365 -in test_server.csr -signkey test_server.key -out test_server.crt
私钥代替每次输入密码
openssl rsa -in test_server.key -out test_server.key.unsecure
csr信息
三.nginx配置
windows下注意路径转义
http{
# 启用Gzip压缩
gzip on;
# 设置压缩级别(1-9),数值越大压缩比越高,但消耗的CPU资源也越多
gzip_comp_level 6;
# 设置压缩的最小文件大小(单位:字节)
gzip_min_length 1024;
# 指定需要压缩的MIME类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 启用对代理服务器的Gzip压缩
gzip_proxied any;
# 启用对Vary头的支持,以便缓存服务器能够正确处理Gzip压缩的内容
gzip_vary on;
server {
listen 80;
server_name localhost;
# 将HTTP请求重定向到HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
ssl_certificate "/usr/local/mydata/ssl/test_server.crt";
ssl_certificate_key "/usr/local/mydata/ssl/test_server.key.unsecure";
ssl_session_timeout 5m;
# 使用此加密套件。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# 只允许更安全的协议版本
ssl_protocols TLSv1.2 TLSv1.3;
# 使用服务器端的首选算法
ssl_prefer_server_ciphers on;
server_name localhost;
location / {
root /usr/local/mydata/nginx/html;
index index.html index.htm;
# 解决f5情况下 资源404
try_files $uri /index.html;
expires 7d;
}
location /prod-api {
rewrite ^/prod-api(.*)$ /$1 break;
proxy_pass https://test.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}