nginx stream无证书代理https
时间: 2023-10-04 11:09:25 浏览: 255
在nginx stream模块中代理https流量需要使用SSL/TLS协议,因此需要提供证书。如果没有证书,可以使用self-signed证书来代替。
以下是使用self-signed证书代理https流量的步骤:
1. 生成自签名证书
可以使用openssl生成自签名证书。在终端中执行以下命令:
```
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
```
这将生成一个有效期为365天的自签名证书,并将其保存到cert.pem文件中。key.pem文件包含私钥。
2. 配置nginx
在nginx配置文件中添加以下内容:
```
stream {
server {
listen 443;
proxy_pass example.com:443;
ssl_preread on;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
}
}
```
这将在本地监听443端口,并将所有流量代理到example.com的443端口。`ssl_preread`指令告诉nginx使用SSL/TLS协议,并从客户端请求中提取SNI(Server Name Indication)来确定要代理的主机名。
3. 测试代理
使用curl或其他工具测试代理是否正常工作。例如:
```
curl --resolve example.com:443:127.0.0.1 https://example.com/
```
这将使用127.0.0.1代理example.com的https流量,并将结果输出到终端。如果一切正常,你应该能够看到example.com的响应。
阅读全文