Nginx 配置支持 HTTPS 代理
本文描述的是Nginx HTTPS反向代理的情况(即后端服务是HTTP的)。
使用openssl配置ssl证书
生成服务器端的私钥(key 文件):
1 | # openssl genrsa -des3 -out server.key 2048 |
输入两次密码后key文件生成完毕。
生成CSR(Certificate Signing Request)文件:
1 | # openssl req -new -key server.key -out server.crs |
根据提示输入需要的信息后CSR文件生成完毕。
生成自签名的CA文件:
1 | # openssl x509 -req -days 3650 -in server.crs -signkey server.key -out ca.crt |
输入key文件的密码后CA文件生成完毕。
Nginx配置
1 | server { |
重新加载Nginx配置文件后,发现Nginx代理的443端口未正常启动。查看Nginx error日志发现以下异常信息:
1 | 2019/03/12 16:49:26 [emerg] 85175#0: SSL_CTX_use_PrivateKey_file("/etc/nginx/server.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib) |
通过以下方式解决:
1 | # mv server.key server.key.org |
重新加载Nginx配置文件。此时也不需要再输入key文件的密码了。