我正在尝试通过 nginx 反向代理 http 服务器。该服务正在侦听端口 8123,我想在 443 上代理它。我创建了一个如下的自签名证书:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Run Code Online (Sandbox Code Playgroud)
这是完整的 nginx 配置:
events {
worker_connections 768;
}
http {
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /home/mcmsadm/cert.pem;
ssl_certificate_key /home/mcmsadm/key.pem;
location / {
proxy_pass http://localhost:8123;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 Firefox 连接到服务器时,它显示 PR_END_OF_FILE_ERROR。
我究竟做错了什么?谢谢!
编辑:我在日志中找到了 nginx 错误消息(没有考虑):
SSL_CTX_use_PrivateKey_file("/home/mcmsadm/key.pem") failed
(SSL: error:2807106B:UI routines:UI_process:processing error:while reading strings
error:0906406D:PEM routines:PEM_def_callback:problems getting password
error:0907B068:PEM routines:PEM_read_bio_PrivateKey:bad password read
error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
Run Code Online (Sandbox Code Playgroud)
我确实使用密码创建了证书,但是当我通过 重新启动它时,nginx 会要求提供该证书nginx -s reload。为了暂时解决这个问题,我将密码写入一个文件中,并将这一行添加到我的nginx.conf:
ssl_password_file /etc/nginx/pass;
Run Code Online (Sandbox Code Playgroud)
有什么方法可以避免将密码写入文件中?
该错误通常与浏览器无关。在我们的例子中,这也不是 nginx 的配置问题,而是防火墙的错误设置。所以从逻辑上讲,当我说这通常与浏览器、服务器端而不是客户端无关时。因此,它不是代理或 VPN。
| 归档时间: |
|
| 查看次数: |
22532 次 |
| 最近记录: |